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é :
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;
            }
N.B. : il s'agit d'une version de test, les chemins sont en dure...

Pour le GetValue, j'ai un doute : d'où les "????".
Ma méthode exécutée retourne un objet imbriqué (nested) de ce type :

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; }
        }
dont je vais devoir décupérer le XmlCustomers.

qui hérite de :
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; }
    }
et là, je cherche à récupérer LogEntities...

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 ?