Obtuve algunas clases estáticas con métodos de extensión que agregan 'lógica de negocios' a las entidades que usan el patrón de repositorio.Cómo inyectar ninject en una clase estática con funciones de extensión
Ahora a veces necesito crear un nuevo IRepository
en estas funciones de extensión.
Actualmente estoy trabajando en torno al entrar a mi kernel Ninject a través del objeto les extiendo, pero es muy feo:
public static IEnumerable<ISomething> GetSomethings(this IEntity entity)
{
using (var dataContext = entity.kernel.Get<IDataContext>())
return dataContext.Repository<ISomething>().ToList();
}
que también podría hacer un constructor estático, el acceso a la Ninject núcleo de alguna manera una fábrica, ¿hay infraestructura para eso en Ninject 2?
¿Alguien conoce una solución mejor? ¿Alguien tiene algunos comentarios sobre esta forma de implementar la lógica comercial?
, gracias por su respuesta. Tampoco soy muy aficionado a la ubicación del servicio, en mi opinión es incluso más feo lo que estoy haciendo ahora. Iré con el problema más grande aquí, que este no es el lugar correcto para agregar lógica comercial. Tenía la esperanza de que hubiera alguna forma mágica de inyectar un constructor estático. Así que podría mantener mi diseño y no hacerlo demasiado feo. Mantendré la pregunta abierta durante unas pocas horas y si no aparece ningún genio de AOP, ¡aceptaré su respuesta! – JJoos
Aquí no encontrarás genios, solo personas que buscan respuestas en los foros, están todos en la lista de correo de Ninjecxt: D En la parte inferior de la línea están los métodos estáticos [como los métodos de extensión], que no hay contexto u oportunidad para interceptar de manera fácil. Es posible hacer fluir el contexto dentro de la Entidad en el punto de 'new'ing de varias maneras (NHibernate y L2S tienen cada uno su propio modo). El problema es que no quieres que las entidades tomen el asunto en sus propias manos y busquen en otros repositorios sin querer. Y la eficiencia también sufrirá, a menos que vaya por una ruta tipo Hiro. –
El libro de Evans DDD (una lectura obligada no importa lo que hagas, incluso si te duele un poco la cabeza para absorberlo) y/o http://thinkddd.com/ realmente te ayudará a pensar a través de tu diseño general aquí .Si realmente está buscando cosas pesadas de AOP, lo encontrará en P en la dirección de PostSharp. –