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()??
不同答案 0 :(得分:51)
使用RegisterInstance的ServiceProductDataProvider的手动新增是否与Register .SingleInstance()??
不同
RegisterInstance
允许您在 AutoFac 中注册单个实例。
RegisterInstance
和RegisterType
+ SingleInstance
方法之间的区别在于RegisterInstance
方法允许您注册不是由 Autofac 构建的实例。
但这两种解决方案都会导致在 Autofac 中注册一个单例。
顺便说一句,两个注册在以下代码示例中都是等效的
var instance = GetInstanceFromSomewhere();
builder.RegisterInstance<IService>(instance);
builder.Register(c => instance).As<IService>().SingleInstance();