Ich versuche, ein Modul von ihm direkte Klasse und über die Verwendung der Schnittstelle zu injizieren. Für diese im wie dies mit Code:Mehrere Injektionen als Singleton mit Ninject
interface ITestInterface {
void WriteHash();
}
class TestClass : ITestInterface {
public void WriteHash() => Console.WriteLine(GetHashCode());
}
class FirstModule : NinjectModule {
public override void Load() {
Bind<TestClass>().ToSelf().InSingletonScope();
}
}
class SecondModule : NinjectModule {
public override void Load() {
Bind<ITestInterface>().To<TestClass>().InSingletonScope();
}
}
Und wenn im verursacht Injektionen wie folgt aus:
NinjectModule[] modules = { new FirstModule(), new SecondModule() };
IKernel kernel = new StandardKernel(modules);
var foo = kernel.Get<TestClass>();
foo .WriteHash();
var bar = kernel.Get<ITestInterface>();
bar .WriteHash();
Ive eine andere Hash-Codes bekam. Was vermisse ich?
Vielen Dank, und
mehrere Schnittstellen oder Registrierungsschlüssel auf die gleiche Implementierung Bindung müssen, wie dies in Ninject erfolgen noch eine Frage dazu: Kann ich separate Module verwenden, um eine Klasse mit verschiedenen Schnittstellen zu injizieren, so wie ich das vorher gemacht habe? Ich möchte die Injizierungslogik auf wenige Module aufteilen, aber Ihre Antwort hilft mir, den größten Teil meines Problems zu lösen. Danke nochmal. – daspisch
Ich bin mir nicht sicher. Mit der v3-Syntax kannst du das natürlich nicht. –