J'écris l'encapsuleur MVC UI en réutilisant les anciennes librairies de base qui ont été écrites pour l'édition de bureau en utilisant Autofac pour DI. Le problème auquel je suis confronté est, les bibliothèques de base travaillent avec la portée de vie que je ne peux pas changer pendant que MVC exige InstancePerRequest.Inconvénient de l'utilisation de ma propre Autofac LifetimeScope dans l'application MVC
Donc, dans MVC, si j'enregistre mes services pour la portée InstancePerRequest, ils sont éliminés par les bibliothèques de base avant la fin de la requête. Cela rend l'application MVC mécontente.
J'ai également essayé d'utiliser LifeTimeScope pour tous les services de l'application MVC. Comme la durée de vie est plus courte que la durée de vie de la requête, elle semble fonctionner dans MVC.
Y a-t-il un inconvénient dans cette approche?
Remarque: Dans le code hérité, tous les services de temps sont résolus manuellement, au lieu d'être injectés via le constructeur. Comme:
using (var scope = IocContainer.BeginLifetimeScope())
{
var service = scope.Resolve<IMyService>();
return service.FindAll();
}