Bonjour,
Voilà, j'expose le problème :
soit deux objets :
- un objet A contenant une EntityCollection<T>
- un objet B du même type T
- une fonction dans laquelle je dois ajouter l'objet B dans la EntityCollection<T> de l'objet A
- la fonction prend en paramètres les deux objets ci-dessus et le nom de la propriété de l'objet A à laquelle ajouter l'objet B
- je connais le nom de la propriété de type EntityCollection<T> à laquelle je dois ajouter l'objet de type T
- je sais que le premier objet contient une EntityCollection<T>

Dans ma fonction, par réflexion, j'arrive à retrouver la propriété de type EntityCollection<T> grâce à son nom.
Maintenant que j'ai cette propriété, j'aimerais pouvoir y ajouter l'objet B.
Mais pour cela, il me faut caster la propriété pour obtenir la fonction Add() et caster l'objet B pour pouvoir le passer à la fonction Add()

Ca ressemblerait à ceci :
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
37
38
39
40
41
42
43
44
45
 
  public class Obj1 : EntityObject
  {
    public string Name;
  }
 
  public class Obj2 : EntityObject
  {
    public string Name;
  }
 
  public class ObjetA1
  {
    public EntityCollection<Obj1> LstO1 { get; set; }
 
    public ObjetA1()
    {
      LstO1 = new EntityCollection<Obj1>();
    }
  }
 
  public class ObjetA2
  {
    public EntityCollection<Obj2> LstO2 { get; set; }
 
    public ObjetA2()
    {
      LstO2 = new EntityCollection<Obj2>();
    }
  }
 
    private void AddToList(object objA, object objB, string propName)
    {
      PropertyInfo pi = objA.GetType().GetProperty(propName);
 
      ((EntityCollection<Obj1>)pi.GetValue(objA, null)).Add((Obj1)objB);
    }
 
    private void button4_Click(object sender, EventArgs e)
    {
      ObjetA1 obj = new ObjetA1();
      Obj1 obj1 = new Obj1();
      obj1.Name = "OBJ1";
      AddToList(obj, obj1, "LstO1");
    }
Dans AddToList il faut que je puisse remplacer Obj1 par le type réel (génériquement) de l'objet objB.
Et là je bute sur ces cast...
Ca devrait être possible mais il y quelque chose que je fais de travers...
Quelqu'un aurait-il une idée de la bonne méthode à employer ??