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 :
Dans AddToList il faut que je puisse remplacer Obj1 par le type réel (génériquement) de l'objet objB.
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"); }
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 ??
Partager