web-dev-qa-db-ja.com

Autofac RegisterInstanceとSingleInstance

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()と同じではありませんか?

29
Elisabeth

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(); 
59
Cyril Durand