Получение значений в отраженных типах из отраженных свойств - PullRequest
2 голосов
/ 14 октября 2008

Мне нужно получить доступ к некоторым элементам, помеченным как внутренние, которые объявлены в сборке третьей стороны.

Я хотел бы вернуть значение из определенного внутреннего свойства в классе. Затем я хотел бы получить значение из свойства этого возвращаемого значения. Однако эти свойства возвращают типы, которые также являются внутренними и объявлены в этой сборке стороннего производителя.

Примеры выполнения, которые я видел, просты и показывают возвращение int или bool. Может кто-нибудь дать пример кода, который обрабатывает этот более сложный случай?

Ответы [ 2 ]

3 голосов
/ 14 октября 2008

Вы продолжаете копать возвращаемое значение (или 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);
    }
}
1 голос
/ 14 октября 2008

Вы всегда можете извлечь его как объект и использовать отражение в возвращенном типе для вызова его методов и доступа к его свойствам.

...