Я не совсем понял кто «матчит» и вызывает валидатор для соотв. команды. интуиция подсказывает что медиатор, однако сначала сложилось впечатление что реализовывали мы интерфейсы из библиотеки флюент. Или IPipelineBehavior это из медиатора?
Спасибо за статью, один непонятный для меня момент:
почему мы добавляем исходных код атрибута в генераторе?
т.е непонятно как программист будет помечать этим атрибутом, если класс такого атрибута появится только на момент анализа кода.
Это крутая штука, я 2 года назад пытался прикрутить генератор на основе рослина и основной проблемой было как раз «встроиться» в шаги компиляции. В итоге все быглядело не так красиво как хотелось бы.
А вообще я мечтаю чтобы появились «генераторы» как конструкция языка.
Что-то типа макросов. чтобы можно было писать например как-то так: class A {
Спасибо за статью!
каков будет результат если принудительно отключить инлайн методов? в реальной жизни далеко не все методы инлайнятся.
есть же старый добрый t4... даже консольное преложение не придется запускать, все доступно из вижал студии. он чем-то вам не подошел?
почему мы добавляем исходных код атрибута в генераторе?
т.е непонятно как программист будет помечать этим атрибутом, если класс такого атрибута появится только на момент анализа кода.
А вообще я мечтаю чтобы появились «генераторы» как конструкция языка.
Что-то типа макросов. чтобы можно было писать например как-то так:
class A {
bool Equals (A obj2){
<codegen.foreach(var fieldName in buildContext.thisClass.Fields) >
if(this.<codegen fieldName />!= obj2.<codegen fieldName />)
return false;
</codegen.foreach>
return true;
}
}
и на этапе компиляции этот макрос разворачивается.