2009-07-24 10 views
5

Czytałem gdzieś, że NHibernate 2.1 obsługuje wtrysk zależności konstruktora dla jego obiektów.Wstrzyknięcie zależności konstruktora od NHibernate 2.1 i StructureMap

Jak skonfigurować konfigurację StructureMap i NHibnerate 2.1, aby uruchomić i uruchomić?

+0

Gdziekolwiek z tym skorzystasz? Staram się również wtłaczać zależności w moje istoty za pomocą sm. –

+0

Nie, myślę, że rozwiązałem to przez ponowne przemyślenie problemu i unikanie wtrysku zależności: – BjartN

Odpowiedz

0

Konfigurując StructureMap dla wszystkich swoich encji (klas itd.), A następnie używając interfejsu dla każdego z nich jako sygnatury dla konstruktora klasy ... gdy tworzysz instancję klasy, która ma zależność w swoim konstruktorze StructureMap automatycznie wstrzyknie to za Ciebie!

[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>(); 

Coś w tym stylu!

To może być użyteczne także: Can I replace the call to Activator.CreateInstance() in NHibernate?

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

2

Zdaję sobie sprawę, że jest to stare pytanie, ale w przypadku, może to być przydatne.

EDYCJA: Oryginalne opublikowane linki nie były skuteczne dla NHib 2.1, znalazłem lepsze informacje.

W przypadku NHibernate 2.1 można utworzyć narzędzie przechwytujące i zastąpić metodę tworzenia instancji, a pojemnik powinien utworzyć tam instancje. Here is an example

Jeśli zamiast tego chcesz wykonać zastrzyk własności, możesz użyć tej samej techniki, ale zamiast tego wykonuj swoją pracę metodą onLoad.

Powiązane problemy