web-dev-qa-db-fra.com

Autofac RegisterInstance vs SingleInstance

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

VS

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

J'ai vu ce code d'un ancien employé ici et je me demande si le gars voulait enregistrer un comportement .SingleInstance ().

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

La mise à jour manuelle du ServiceProductDataProvider avec RegisterInstance n'est-elle pas identique à Register .SingleInstance () ??

29
Elisabeth

La mise à jour manuelle du ServiceProductDataProvider avec RegisterInstance n'est-elle pas identique à Register .SingleInstance () ??

RegisterInstance vous permet d'enregistrer une seule instance dans AutoFac.

La différence entre les méthodes RegisterInstance et RegisterType + SingleInstance est que la méthode RegisterInstance vous permet d'enregistrer une instance non construite par Autofac =.

Mais les deux solutions entraîneront l'enregistrement d'un singleton dans Autofac.

Par ailleurs, les deux enregistrements sont équivalents dans l'exemple de code suivant

var instance = GetInstanceFromSomewhere(); 

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