2017-08-18 1 views
0

De l'Autofac documentation:Autofac Comment mettre à jour l'enregistrement?

Autofac remplace les enregistrements de composants par défaut. Cela signifie qu'une application peut enregistrer tous ses composants par défaut, puis lire un fichier de configuration associé pour remplacer ceux qui ont été personnalisés pour l'environnement de déploiement.

Comment puis-je remplacer l'enregistrement, tout d'abord je fais scan assebly,

builder 
    .RegisterAssemblyTypes(assembly)    
    .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies) 
    .AsImplementedInterfaces() 
    .AsSelf() 
    .InstancePerRequest(); 

Ensuite, essayez de mettre à jour l'enregistrement sans étiquette de portée

builder 
    .RegisterType<NotPerRequestType>() 
    .AsImplementedInterfaces(); 

Mais il y a encore 2 inscriptions et je reste n'obtenant aucune erreur de balise correspondante où je résous NotPerRequestType.

Répondre

2

Vous ne pouvez pas modifier un enregistrement post-facto. Vous devez exclure les éléments que vous ne souhaitez pas enregistrer lors de l'analyse de l'assemblage à l'aide de LINQ.

builder.RegisterAssemblyTypes(assembly) 
     .Where(t => t != typeof(NotPerRequestType)) 
     ... 

Ensuite, vous aurez seulement le seul enregistrement - celui que vous enregistrez manuellement plus tard.

Ceci est, malheureusement, le "sabre à double tranchant" d'essayer de simplement enregistrer tout puis en réalisant que vous avez des exceptions. Vous devez vraiment utiliser la numérisation de l'assemblage des blanchets avec beaucoup de soin.

+2

En outre, au lieu de ".Where (t => t! = Typeof (NotPerRequestType))", il peut utiliser la méthode "Excepté" fournie par AutoFac. Exemple: ".Except ()" – m1o2