Ich habe über Autofac gelesen, dass es schnell ist. Ich habe mir die Kodierung angesehen, und sie ist ziemlich toll. Aber ich bin mir nicht ganz sicher, wie ich es benutzen soll. Ich habe StructureMap verwendet, und es hat eine statische ObjectFactory. Ninject hat den Kernel, aber auf den Google-Seiten von Autofac wird empfohlen, so etwas zu tun:
using( var resolver = builder.Build() ){
var whatINeed = resolver.Resolve<INeedThisService>();
}
Es ist eine WinForms-Anwendung, so dass ich einen ungültigen Objektstatus von tun die oben, so dass ich wechselte zu einem globalen IContainer, und tat es auf diese Weise
using( var resolver = Program.Container.CreateInnerContainer() )
{
var whatINeed = resolver.Resolve<INeedThisService>();
}
Ich habe es etwa 3 oder 5 Mal benutzt. Aber ist das effizient? Oder sollte ich einfach etwas tun wie
var whatINeed = Program.Resolve<INeedThisService>()
und unter der Bettdecke
internal static TServervice Resolver<TService>(){
if(_container == null ) _container = builder.Build();
return _container.Resolve<TService>();
}
Welche würden Sie verwenden und warum? Gibt es auch eine Strafe für die Arbeit mit CreateInnerContainer()?