Получение значений в отраженных типах из отраженных свойств
-
03-07-2019 - |
Вопрос
Мне нужен доступ к некоторым членам, помеченным как внутренние, которые объявлены в сторонней сборке.
Я хотел бы вернуть значение из определенного внутреннего свойства класса.Затем я хотел бы получить значение из свойства этого возвращенного значения.Однако эти свойства возвращают типы, которые также являются внутренними и объявлены в этой сторонней сборке.
Примеры этого, которые я видел, просты и просто показывают возврат int или bool.Может ли кто-нибудь привести пример кода, который обрабатывает этот более сложный случай?
Решение
Вы просто продолжаете копать возвращаемое значение (или PropertyType PropertyInfo):
ты
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);
}
}
Другие советы
Вы всегда можете получить его как объект и использовать отражение возвращаемого типа для вызова его методов и доступа к его свойствам.