Ninject ignoriert das Attribut [Inject]

8

Ich habe ein Setup mit Ninject und NHibernate wie folgt. Nun, wenn ich dieses Szenario habe ..

%Vor%

Dies funktioniert ordnungsgemäß.

Aber wenn ich eine andere Klasse mache ...

%Vor%

Die ISession ist null! Dies ist nicht nur bei ISession, sondern bei allem, was ich versuche zu injizieren.

Hier ist mein SessionModule:

%Vor%     
Ciel 20.03.2011, 17:01
quelle

2 Antworten

11

Es funktioniert für Controller, weil Sie sie mit Ninject (über die Controller Factory) instanziieren.

Wenn Sie new QueryObject().Execute(); ausführen, verwenden Sie Ninject nicht, um Ihr QueryObject zu instanziieren. Das .NET Framework selbst hat keine Kenntnisse über das Injizieren von Eigenschaften.

Sie müssen den Ninject-Kernel verwenden, um Ihr QueryObject aufzulösen. So etwas sollte es tun:

%Vor%

Der Kernel wird dann ein neues QueryObject instanziieren, bei dem alle Abhängigkeiten richtig gesetzt sind.

Damit dies funktioniert, müssen Sie das QueryObject registrieren:

%Vor%

Dadurch wird Ninject angewiesen, immer eine Instanz eines QueryObject zurückzugeben, wenn Sie kernel.Get<QueryObject>();

ausführen

Dies geschieht in Ihrem SessionModule .

Ich empfehle, Module und den Kernel aus den Dokumenten zu lesen. ≈

    
alexn 20.03.2011, 17:48
quelle
5

Sie können Folgendes tun, wenn Sie das Objekt selbst erstellen möchten:

%Vor%

Ninject wird dann versuchen, Ihre Abhängigkeiten zu erfüllen.

    
Daniel Marbach 21.03.2011 14:03
quelle

Tags und Links