Уровень обслуживания моей архитектуры состоит из множества классов команд единственного назначения (классов, которые выполняют одну конкретную функцию с данными, например, создание пользователя) и классы запросов (отдельные классы, которые запрашивают в базе данных определенные данные). Они вводятся в мои классы контроллера Asp.net MVC через установщики Windsor.
Например, я запускаю container.Register (Component.For
в моем пользовательском классе IWindsorInstaller
для создания экземпляра CreateUserCommand
в моих контроллерах.
Проблема в том, что, поскольку каждый класс команды / запроса является единственной целью, у меня будет много этих классов, и поддержание моего класса установщика будет проблемой прикладом. Мне пришло в голову, что это была бы идеальная работа для T4, так как я могу просто запустить T4 и восстановить класс установщика для автоматической регистрации всех моих классов команд и запросов.
К сожалению, поскольку я никогда раньше не делал T4, я не знаю, как приступить к реализации этого. Я прочитал основы T4, но моя основная проблема заключается в том, как на самом деле найти все мои классы команд и запросов через T4.
На бумаге я могу найти все свои классы команд / запросов, потому что они определены в пространствах имен MyApp.DomainModel.Commands. *
и MyApp.DomainModel.Queries. *
. Например, класс CreateUserCommand
находится в пространстве имен MyApp.DomainModel.Queries.Users
. Однако я понятия не имею, как на самом деле просматривать пространства имен во время выполнения, не говоря уже о рекурсии.
Я могу создать интерфейс ICommand
и IQuery
, чтобы эти классы основывались на том, что ' в T4 легче найти, чем в пространствах имен, но я не знаю, как найти все подклассы ICommand / IQuery
через T4.
Я знаю отражение, но читая, я много читал, говоря что использование отражения в T4 - плохая идея и / или не работает должным образом.
Если бы кто-нибудь мог указать мне на что-нибудь, что могло бы помочь мне в этом, я был бы очень признателен!