Pergunta

Eu preciso acessar alguns membros marcados interna que são declaradas em um terceiro conjunto.

Eu gostaria de retornar um valor de uma propriedade interna particular em uma classe. Então eu gostaria de recuperar um valor de uma propriedade em que o valor retornado. No entanto, essas propriedades tipos de retorno, que também são internas e declarou nesta terceiros montagem.

Os exemplos de fazer isso eu tenho visto são simples e apenas mostrar o retorno int ou bool. Alguém pode por favor, dê um exemplo de código que lida com este caso mais complexo?

Foi útil?

Solução

Você só continuar a cavar no valor retornado (ou o PropertyType da 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);
    }
}

Outras dicas

Você pode sempre recuperá-la como uma reflexão de objetos e uso do tipo retornado para invocar seus métodos e acessar suas propriedades.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top