Was ist der Unterschied zwischen .ToConstructor und .ToMethod in Ninject-3?
In Ninject3 es gibt eine neue .ToConstructor Funktion.
Als beschrieben, hilft es, zu stark der Typ-Konstruktor Argumente wie:
Bind<IMyService>().ToConstructor(
ctorArg => new MyService(ctorArg.Inject<IFoo>(), ctorArg.Inject<IBar>()));
Was ist eigentlich der Unterschied zwischen der Verwendung .ToConstructor und .ToMethod in fast der gleichen Weise:
Bind<IMyService>().ToMethod(
x => new MyService(x.Kernel.Get<IFoo>(), x.Kernel.Get<IBar>()));
Ist es nur ein syntax-Zucker zu vermeiden, mit Kernel.Get<>() oder ist es etwas mehr, dass ich bin fehlt?
- Hinweis:
Get<T>
ist eine Erweiterung Methode und Sie müssenusing Ninject;
für Sie zu arbeiten. Es dauerte eine minute, da habe ich entfernt mitusing Ninject.Modulesl
bis jetzt )
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten Fall verhält sich wie
To<MyService>()
außer, dass Sie explizit wählen Sie den Konstruktor. Dies bedeutet, dass der Kontext übergeben wird, durchMyService
und Sie können Bedingungen verwenden, fürIFoo
undIBar
oder einer Ihrer dpependencies, wo im zweiten Fall bekommen Sie einen neuen Kontext fürIFoo
undIBar
und Sie werden nicht wissen, dass Sie injiziertMyService
.z.B.
funktioniert nicht im zweiten Fall.
Foo(int x)
undFoo(string x)
ToConstructor(x => new FooA(x.Inject<BarA>()))
anstatt das zu tunx.Context.Kernel.Get<BarA>