Recuperação de valores em tipos reflectidos a partir das propriedades reflectidos
-
03-07-2019 - |
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?
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.