La capa de servicios de mi arquitectura está compuesta de muchas clases de comando de propósito único (clases que realizan una función específica en datos, como crear un usuario) y clases de consulta (clases individuales que consultan la base de datos para obtener datos específicos). Estos se inyectan en mis clases de controlador Asp.net MVC a través de los instaladores de Windsor.Cómo puedo hacer que T4 genere código basado en clases en un espacio de nombre específico (Recursivamente)
Por ejemplo, ejecuto container.Register(Component.For<CreateUserCommand>().ImplementedBy<CreateUserCommand>());
en mi clase personalizada IWindsorInstaller
para crear instancias del CreateUserCommand
en mis controladores.
El problema es que ya que cada clase de comando/consulta es solo propósito, que va a terminar con una gran cantidad de estas clases, y el mantenimiento de mi clase instalador va a ser un dolor en el trasero. Se me ocurrió que este sería un trabajo perfecto para T4, ya que solo puedo ejecutar el T4 y hacer que regenere la clase de instalador para registrar automáticamente todas mis clases de comando y consulta.
Desafortunadamente, como nunca antes había hecho T4, no sé cómo proceder para implementarlo. He leído los conceptos básicos de T4, pero mi principal punto de confusión es cómo encontrar realmente todas mis clases de comando y consulta a través de T4.
En papel, puedo encontrar todas mis clases de comando/consulta porque están definidas en los espacios de nombres MyApp.DomainModel.Commands.*
y MyApp.DomainModel.Queries.*
. Por ejemplo, la clase CreateUserCommand
reside en el espacio de nombres MyApp.DomainModel.Queries.Users
. Sin embargo, no tengo idea de cómo hacer para ver los espacios de nombres en tiempo de ejecución, y mucho menos recursivamente.
Es posible para mí para crear una interfaz ICommand
y IQuery
para estas clases que se basan fuera de si eso es más fácil de encontrar en la T4 de espacios de nombres, pero no sabía cómo iba a encontrar todos ICommand/IQuery
subclases desde la T4.
Yo sé la reflexión, pero a partir de la lectura he leído mucho diciendo que el uso de la reflexión en T4 es una mala idea y/o no funciona correctamente.
¡Si alguien pudiera señalarme algo que me ayudaría a lograr esto, lo agradecería enormemente!
¡Funciona como un encanto, gracias! – KallDrexx