Bonjour,

J'ai créé une classe template:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class MyClassTemplate<Type> where Type: class
{
    public MyClassTemplate() { ... }
 
    ...
}
Je la définis en singleton:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyClassTemplate<Type> where Type: class
{
    protected MyClassTemplate() { }
 
    private static MyClassTemplate<Type> m_TheInstance;
 
    public static MyClassTemplate<Type> TheInstance
    {
        get
        {
            if (m_TheInstance == null)
            {
                m_TheInstance = new MyClassTemplate<Type>();
            }
 
            return m_TheInstance;
         }
     }
}
Je veux utiliser cette classe par héritage afin de la spécialiser en lui rajoutant des méthodes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public  ClassTemplateString : MyClassTemplate<String>
{
    public void Test() {}
 
    ...
}
Malheureusement, comme TheInstance est hérité et correspond à MyClassTemplate<Type> et non à ClassTemplateString, impossible d'accéder aux méthodes de ClassTemplateString:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
// Erreur !
ClassTemplateString.TheInstance.Test();
J'aimerai en fait éviter de recoder la partie singleton pour chaque classe fille.
Merci d'avance pour vos remarques et suggestions,
AL2000