Bonjour,
Dans un projet, je dois faire de la reflexion pour executer des méthodes. Cependant, je rencontre un problème sur la récupération des valeurs en retour.
voici le code executé :N.B. : il s'agit d'une version de test, les chemins sont en dure...
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 Assembly interfacedXmlCustomersLoader = Assembly.LoadFile(@"C:\PROJECTS\Tools.FileTransferDaemon\Tools.FileTransferDaemon.XmlLoaderFromDb\bin\Debug\Tools.FileTransfer.XmlLoaderFromDb.dll"); if (interfacedXmlCustomersLoader == null) throw new NullReferenceException("Impossible de charger la dll de chargement de l'objet XmlDocument. Le chemin spécifié est peut-être incorrect"); object loaderClass = interfacedXmlCustomersLoader.CreateInstance("Tools.FileTransferDaemon.XmlLoaderFromDb.LoadXmlCustomers"); if (loaderClass == null) throw new NullReferenceException("Impossible de récupérer l'instance de la classe de chargement"); MethodInfo methodToExecute = loaderClass.GetType().GetMethod("GetClustersDocument"); if (methodToExecute == null) throw new NullReferenceException("Impossible de récupérer la méthode à exécuter"); object returned = methodToExecute.Invoke(loaderClass, null); if (returned != null) { XmlDocument doc = returned.GetType().GetProperty("XmlCustomers").GetValue(?????, null) as XmlDocument; }
Pour le GetValue, j'ai un doute : d'où les "????".
Ma méthode exécutée retourne un objet imbriqué (nested) de ce type :
dont je vais devoir décupérer le XmlCustomers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class ReturnObject : ReturnObjectBase { /// <summary> /// Document Xml généré. /// </summary> public XmlDocument XmlCustomers { get; internal set; } /// <summary> /// Elément xml. /// </summary> internal XmlElement Node { get; set; } }
qui hérite de :
et là, je cherche à récupérer LogEntities...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public abstract class ReturnObjectBase { /// <summary> /// Obtient ou défini la collection des entitées de log. /// </summary> public LogEntityCollection LogEntities { get; set; } }
j'imagine que les deux prop se récpèrent de la même façon, mais il y a une subtilité que j'ai due louper...
un coup de main ?
Partager