Bonjour

Voici un problème à la fois simple et compliqué (pour moi)

Je travail en Dot Net 2.0.

Je défini
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
public class maclass :ImonInterface
{
 
}
 
 
et 
 
public class maclassDeuxLeretour
{
      private List<ImonInterface> _maliste= null;
 
      .... 
 
      public void MaMethode(ref IList<ImonInterface> maliste)
     {
           _malist = malist;
     }
 
    ....
 
 
}
 
 
et enfin quelque part dans le code .... loin très loin ....
 
maclassDeuxLeRetour _maclassDeuxLeRetour = new maclassDeuxLeRetour();
List<maclass> _maclass = new List<maclass>();
 
... 
_maclass.Add(new maClass());
...
 
 _maclassDeuxLeRetour .MaMethode (ref (IList<ImonInterface>)_maliste)
et là à la compile, c'est le drame

=>
Argument '1'*: impossible de convertir de 'ref System.Collections.Generic.IList<Espace.maClass>' en 'ref System.Collections.Generic.IList<Espace.ImonInterface>'
Mais pourquoi donc ?

Y a-t-il une manière de contourner le problème, voir une autre approche (si possible en évitant le code unsafe).

Je passe une List<ImonInterface> car l'object de la liste n'est pas forcement de type maClass mais il implémente toujours l'interface ImonInterface.

Merci de votre aide