Подтвердить что ты не робот

Autofac RegisterInstance vs SingleInstance

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

VS

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

Я видел этот код у бывшего сотрудника здесь и задаюсь вопросом, хочет ли парень зарегистрировать поведение .SingleInstance().

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

Является ли ручная настройка ServiceProductDataProvider с RegisterInstance не такой, как регистр .SingleInstance()??

4b9b3361

Ответ 1

Является ли ручная настройка ServiceProductDataProvider с RegisterInstance не такой, как регистр .SingleInstance()??

RegisterInstance позволяет зарегистрировать один экземпляр в AutoFac.

Разница между методами RegisterInstance и RegisterType + SingleInstance заключается в том, что метод RegisterInstance позволяет зарегистрировать экземпляр, не созданный Autofac.

Но оба решения приведут к регистрации singleton в Autofac.

Кстати, обе регистрации эквивалентны в следующем примере кода

var instance = GetInstanceFromSomewhere(); 

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