我读过 Autofac 说它很快。我看过所涉及的编码,它非常整洁。但我不太确定如何使用它。我用过 StructureMap,它有一个静态的 ObjectFactory。Ninject 有内核,但在 Autofac 的 Google 页面中,他们建议这样做:
using( var resolver = builder.Build() ){
var whatINeed = resolver.Resolve<INeedThisService>();
}
这是一个 WinForms 应用程序,所以我从上面的操作中得到了一个无效的对象状态,所以我切换到了一个全局 IContainer,并这样做了
using( var resolver = Program.Container.CreateInnerContainer() )
{
var whatINeed = resolver.Resolve<INeedThisService>();
}
我已经使用了大约 3 或 5 次。但这有效吗?还是我应该做类似的事情
var whatINeed = Program.Resolve<INeedThisService>()
并在幕后
internal static TServervice Resolver<TService>(){
if(_container == null ) _container = builder.Build();
return _container.Resolve<TService>();
}
你会使用哪个,为什么?使用 CreateInnerContainer() 也会受到惩罚吗?