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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.