Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Jack128, Вы писали:
J>>чтоб убрать лишнее выделение памяти под массив. S>Гхимм, а оно разве не учтено в рослине?
Вроде тут про Array.Empty говорится, то есть про случай, когда нет аргументов для форматирования. А я говорю, про случай, когда мы передаем один аргумент для форматирования.
Собственно у любого логера так сделано.
момент в решарпере. И губозакаточную машинку пожалуйста.
Я вот думаю: дадут мне под это дело прикрутить отдельный проект с реврайтером на рослине, геройски копипастить копипасту, или всё-таки попытать счастья с парсингом регексами?
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Jack128, Вы писали:
J>>Если совсем замарочиться, то нужно вообще дженерик методы делать, а-ля S>А, не так вопрос понял
S>Ну да, надо сделать генерик-версию, чтоб без боксинга. И перегрузки до 4 аргументов. И допилить вот этот
момент в решарпере. И губозакаточную машинку пожалуйста. S>Я вот думаю: дадут мне под это дело прикрутить отдельный проект с реврайтером на рослине, геройски копипастить копипасту, или всё-таки попытать счастья с парсингом регексами?
S>Есть какие идеи?
Э, моя не понимать. Для чего именно нужен рерайтер на рослине?
типа по коду
Здравствуйте, Jack128, Вы писали:
J>Э, моя не понимать. Для чего именно нужен рерайтер на рослине? J>генерить набор перегрузок с один, двумя и тд аргументами??
Ну да. Я как бы альтернатив для сделать один раз и хорошо не вижу.
Задача: на входе исходник, на выходе — partial-класс с перегрузками для методов с params object[] args в конце.
На параметры метода могут быть навешены атрибуты, могут использоваться default values, default value может быть произвольной строкой, для каждой перегрузки надо адаптировать xdoc comments — из них справка генерируется.
Вот не хочу я такое регэксом парсить
Эта штука не один раз нужна, навскидку методов 5 похожих точно найдётся.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Jack128, Вы писали:
J>>Э, моя не понимать. Для чего именно нужен рерайтер на рослине? J>>генерить набор перегрузок с один, двумя и тд аргументами??
S>Ну да. Я как бы альтернатив для сделать один раз и хорошо не вижу.
S>Задача: на входе исходник, на выходе — partial-класс с перегрузками для методов с params object[] args в конце.
S>На параметры метода могут быть навешены атрибуты, могут использоваться default values, default value может быть произвольной строкой, для каждой перегрузки надо адаптировать xdoc comments — из них справка генерируется.
default values в методах с params ? Это как?
S>Вот не хочу я такое регэксом парсить S>Эта штука не один раз нужна, навскидку методов 5 похожих точно найдётся.
Ну я б таки регэксп заюзал, в целевых методах не будет супер сложного кода, так что никаких колизий быть не должно.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Sinix, Вы писали:
S>>Эта штука не один раз нужна, навскидку методов 5 похожих точно найдётся.
AVK>Ага, в GetValueOrDefault например. После последних правок там 18 перегрузок. 18, Карл!
TResult GetValueOrDefault<TKey, TValue, TResult>([NotNull] this IDictionary<TKey, TValue> dictionary, TKey key, TResult defaultValue)
where TValue: TResult
Смысл в том, что иногда у нас есть на например словарь Dictionary<int, List<MyClass>>, а в качестве дефолотового значения мы хотим задать IReadOnlyList<MyClass>
S>>На параметры метода могут быть навешены атрибуты, могут использоваться default values, default value может быть произвольной строкой, для каждой перегрузки надо адаптировать xdoc comments — из них справка генерируется. J>default values в методах с params? Это как?
Ну вот так вот например: http://stackoverflow.com/a/13807929/318263
S>>Вот не хочу я такое регэксом парсить S>>Эта штука не один раз нужна, навскидку методов 5 похожих точно найдётся.
J>Ну я б таки регэксп заюзал, в целевых методах не будет супер сложного кода, так что никаких колизий быть не должно.
Ты похоже всю засаду с задачей не заметил.
Надо
1. Из готового исходника выцепить вcе методы с params. Хотя бы заголовки, от первого комментария к методу и до первого операнда. Атрибуты и комментарии важны.
2. В коде каждого метода заменить params на n параметров. Добавить генерик-параметры.
3. Заменить тело метода на вызов исходной перегрузки.
4. Поправить xml-документацию.
Здравствуйте, Sinix, Вы писали:
S>1. NotNullNorWhiteSpace — нужен реальный юз-кейз. Я ещё не видел ни одного метода, в котором использовался бы такой ассерт. Без реальных сценариев я код не добавляю, т.к. неизбежно получается сфероконь на выброс. Исключений не видел.
Приходит тебе какой-нибудь url, path или строковый id на вход, который хочется по-быстрому провалидировать, не заморачиваясь полноценной проверкой. Вот тут оно и пригодится, но скорее нужно NotNullNorEmptyNorWhiteSpace.
Здравствуйте, Jack128, Вы писали:
J>Смысл в том, что иногда у нас есть на например словарь Dictionary<int, List<MyClass>>, а в качестве дефолотового значения мы хотим задать IReadOnlyList<MyClass>
Как то уж слишком кучеряво и неочевидно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>