Ich habe über Autofac gelesen, dass es schnell ist. Ich habe die Programmierung gesehen und es ist sauber. Aber ich bin mir nicht sicher, wie ich es benutzen soll. Ich habe StructureMap verwendet und es hat eine statische ObjectFactory. Ninject den Kernel, aber in Autofac Google Seiten, die sie empfahlen, etwas zu tun, wie folgen aus:Mit Autofac was wären die Vor- und Nachteile
using(var resolver = builder.Build()){
var whatINeed = resolver.Resolve<INeedThisService>();
}
Es ist eine WinForms-Anwendung, so habe ich einen ungültigen Objektzustand aus der oben tun, so dass ich swiched einen globalen IContainer zu haben, und tat es so
using(var resolver = Program.Container.CreateInnerContainer())
{
var whatINeed = resolver.Resolve<INeedThisService>();
}
Ich habe es etwa 3 oder 5 Mal verwendet. Aber ist das effizient? Oder soll ich tun, nur so etwas wie
var whatINeed = Program.Resolve<INeedThisService>()
und unter der Decke
internal static TServervice Resolver<TService>(){
if(_container == null) _container = builder.Build();
return _container.Resolve<TService>();
}
Weichen würden Sie verwenden, und warum. Gibt es eine Strafe für die Arbeit mit CreateInnerContainer()?
Ich weiß, wie Verwenden Sie einen IoC, ich wollte etwas, das in den Richtlinien des Rahmens für den Zugriff auf meine Dienste war. Mit StructureMap ist eine klare Lösung, Sie verwenden nur ObjectFactory. Aber mit Autofac ist das nicht so klar, und ich würde es hassen, alle Komponenten neu registrieren zu müssen. –
Könnten Sie erklären, was Sie meinen, indem Sie alle Komponenten "neu registrieren"? Suchen Sie nach einer automatischen Registrierung aller Typen in einer Baugruppe? Ich werde in der Zwischenzeit die ObjectFactory von StructureMap betrachten. –
Re-register bedeutet, dass der Teil, der einen IContainer generiert, erneut ausgeführt wird. Die Frage war, wie man den IContainer behalten kann, wenn man ihn durch eine using (..) Anweisung ausführt. –