конфигурировать объекты моего класса через расширения в fluent стиле типа new T().Map().Map().Map...
но вариаций сигнатур слишком много, то есть иногда нужен .Map <MyFilter>(myHandler), иногда .Map(myFilter, myHandler), иногда .Map(x => ..., ctx => ...)
то есть расширений нужно много, например
.Map(IFilter, IHandler)
.Map(Predicate, IHandler)
.Map(Predicate, Action)
.Map<TFilter>(IHandler)
etc
причём есть идентичные сигнатуры, но с другим именем расширения
.MapAspect(IFilter, IHandler)
.MapAspect(Predicate, IHandler)
.MapAspect(Predicate, Action)
etc
на выходе получаются взаимозаменяемые расширения, где например фильтр можно указать через дженерик, через передачу фильтра как объекта, через предикат, и логика везде будет одна и та же
хотелось бы создание этих расширений автоматизировать
вопрос: можно ли это автоматизировать? слышал слово "кодогенерация", это мой случай? ._.
Можно. Кодоген
Обсуждают сегодня