2009-07-24 8 views
5

He leído en alguna parte que NHibernate 2.1 admite la inyección de dependencia de constructor para sus entidades.Inyección de dependencia de constructor con NHibernate 2.1 y StructureMap

¿Cómo hago para configurar StructureMap y NHibnerate 2.1 para ponerlo en funcionamiento?

+0

¿Llegas a algún lado con esto? También estoy buscando inyectar dependencias en mis entidades con sm. –

+0

No, creo que lo resolví repensando el problema y evitando la inyección de dependencia :) – BjartN

Respuesta

0

Configurando StructureMap en todas sus entidades (clases, etc.) y luego usando la interfaz para cada una de ellas como la firma del constructor de una clase ... cuando crea una instancia de la clase que tiene una dependencia en su constructor ¡StructureMap lo inyectará automáticamente por usted!

[PluginFamily("Default")] 
public interface IWidget1 

[Pluggable("Default")] 
public class Widget1 : IWidget1 

[PluginFamily("Default")] 
public interface IAnotherWidget 

[Pluggable("Default")] 
public class AnotherWidget : IAnotherWidget 
{ 
    public AnotherWidget(IWidget widget) 
    { 
     ... 
    } 
} 

IAnotherWidget _anotherWidget = ObjectFactory.GetInstance<IAnotherWidget>(); 

¡Algo así!

Esto puede ser de utilidad también: Can I replace the call to Activator.CreateInstance() in NHibernate?

Y esto: http://devlicio.us/blogs/billy_mccafferty/archive/2007/02/05/inject-di-container-into-domain-objects-with-nhibernate.aspx

2

Comprendo que esto es una vieja pregunta, pero en caso de que podría ser útil.

EDITAR: Los enlaces publicados originalmente no fueron efectivos para NHib 2.1, encontraron una mejor información.

Para NHibernate 2.1, puede crear un interceptor y anular el método de creación de instancias y hacer que su contenedor cree sus instancias allí. Here is an example

Si desea realizar la inyección de propiedad en su lugar, puede utilizar la misma técnica, pero en su lugar, realice su trabajo en el método onLoad.

Cuestiones relacionadas