Récupération de valeurs dans les types reflétés à partir de propriétés reflétées

StackOverflow https://stackoverflow.com/questions/200900

Question

Je dois accéder à certains membres marqués comme internes déclarés dans une assemblée tierce.

Je voudrais renvoyer une valeur d'une propriété interne particulière dans une classe. Ensuite, j'aimerais récupérer une valeur d'une propriété sur cette valeur renvoyée. Cependant, ces propriétés renvoient des types également internes et déclarés dans cet assembly tiers.

Les exemples de ce que j'ai vu sont simples et montrent simplement le retour int ou bool. Quelqu'un peut-il donner un exemple de code prenant en charge ce cas plus complexe?

Était-ce utile?

La solution

Vous continuez simplement à chercher sur la valeur renvoyée (ou le PropertyType de PropertyInfo):

u

sing System;
using System.Reflection;
public class Foo
{
    public Foo() {Bar = new Bar { Name = "abc"};}
    internal Bar Bar {get;set;}
}
public class Bar
{
    internal string Name {get;set;}
}
static class Program
{
    static void Main()
    {
        object foo = new Foo();
        PropertyInfo prop = foo.GetType().GetProperty(
            "Bar", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
        object bar = prop.GetValue(foo, null);
        prop = bar.GetType().GetProperty(
            "Name", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
        object name = prop.GetValue(bar, null);

        Console.WriteLine(name);
    }
}

Autres conseils

Vous pouvez toujours le récupérer sous forme d'objet et utiliser la réflexion sur le type renvoyé pour appeler ses méthodes et accéder à ses propriétés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top