Bataille avec le Unity et la règle CA2000
Bonjour,
Je dois reprendre un projet avec Unity car mon manager veut que je corrige tous les avertissement remonté par l'analyseur de code.
A l'origine il y a ce bout de code qui provoque l'avertissement CA2000.
- Il s'agit d'une méthode static dans une classe static (si ça peut aider)
- Container est également est de type UnityContainer
- new HierarchicalLifetimeManager() déclenche l'avertissement
Code:
1 2 3
| Container.RegisterType<ICustomRepository<Customer>, CustomRepository<Customer>>(new HierarchicalLifetimeManager());
Container.RegisterType<ICustomRepository<Provider>, CustomRepository<Provider>>(new HierarchicalLifetimeManager());
// Encore une dizaine de lignes sur le même moule |
En cherchant un peu sur le net, j'ai découvert un POST de 2010 sur StackOverFlow (réponse qui a été validée et qui est donc normalement bonne) :
https://stackoverflow.com/questions/...rcontrolledlif
J'ai donc adapté mon code en créant la méthode suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| private static void RegisterType<TFrom, TTo>() where TTo : TFrom
{
var manager = new HierarchicalLifetimeManager();
try
{
Container.RegisterType<TFrom, TTo>(manager);
}
catch
{
manager.Dispose();
throw;
}
} |
Et en l'appelant de la manière suivante :
Code:
RegisterType<ICustomRepository<Customer>, CustomRepository<Customer>>();
Au lieu d'avoir plusieurs avertissement CA2000, j'en ai plus qu'un sur ma nouvelle méthode mais toujours sur le new HierarchicalLifetimeManager
Quelqu'un a-t-il une idée pour corriger cet avertissement ?
Merci.