Autofac RegisterInstance与SingleInstance

时间:2015-07-23 08:27:20

标签: c# asp.net-web-api asp.net-web-api2 autofac

IProductRepositoryProxy ProductDataServiceProviderInstance = new ServiceProductDataProvider();
builder.RegisterInstance(ProductDataServiceProviderInstance).As<IProductRepositoryProxy>();

VS

builder.RegisterType<ServiceProductDataProvider>().As<IProductRepositoryProxy>().InstancePerRequest();

我在这里看到了前雇员的代码,并想知道这个人是否想要注册.SingleInstance()行为。

builder.RegisterType<ServiceProductDataProvider>().As<IProductRepositoryProxy>().SingleInstance();

使用RegisterInstance的ServiceProductDataProvider的手动新增是否与Register .SingleInstance()??

不同

1 个答案:

答案 0 :(得分:51)

  

使用RegisterInstance的ServiceProductDataProvider的手动新增是否与Register .SingleInstance()??

不同

RegisterInstance允许您在 AutoFac 中注册单个实例。

RegisterInstanceRegisterType + SingleInstance方法之间的区别在于RegisterInstance方法允许您注册不是由 Autofac 构建的实例。

但这两种解决方案都会导致在 Autofac 中注册一个单例。

顺便说一句,两个注册在以下代码示例中都是等效的

var instance = GetInstanceFromSomewhere(); 

builder.RegisterInstance<IService>(instance); 
builder.Register(c => instance).As<IService>().SingleInstance();