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 C# : Sélectionner tout - Visualiser dans une fenêtre à part
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 C# : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Au lieu d'avoir plusieurs avertissement CA2000, j'en ai plus qu'un sur ma nouvelle méthode mais toujours sur le new HierarchicalLifetimeManager
Code : Sélectionner tout - Visualiser dans une fenêtre à part RegisterType<ICustomRepository<Customer>, CustomRepository<Customer>>();
Quelqu'un a-t-il une idée pour corriger cet avertissement ?
Merci.
Partager