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%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>();
Dies geschieht in Ihrem SessionModule
.
Ich empfehle, Module und den Kernel aus den Dokumenten zu lesen. ≈
Sie können Folgendes tun, wenn Sie das Objekt selbst erstellen möchten:
%Vor%Ninject wird dann versuchen, Ihre Abhängigkeiten zu erfüllen.
Tags und Links ninject