Abrufen von Werten in reflektierten Typen von reflektierten Eigenschaften
-
03-07-2019 - |
Frage
muss ich einige Mitglieder Zugriff markiert interne dass in einem Dritten Versammlung deklariert sind.
Ich mag einen Wert von einer bestimmten internen Eigenschaft in einer Klasse zurückzukehren. Dann würde Ich mag einen Wert aus einer Eigenschaft auf, dass zurückgegebene Wert abzurufen. Allerdings sind diese Eigenschaften Rückgabetypen, die auch intern sind und in dieser dritten Parteiversammlung erklärt.
Die Beispiele, dies zu tun ich gesehen habe, sind einfach und zeigen nur int oder Bool zurück. Kann jemand bitte einig Beispiel-Code geben, der diesen komplexeren Fall behandelt?
Lösung
Sie halten gerade auf dem zurückgegebenen Wert Graben (oder die PropertyType der 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);
}
}
Andere Tipps
Sie können es immer als ein Objekt abrufen und die Reflexion über die zurückgegebene Art verwenden, um seine Methoden aufrufen und Zugriff auf seine Eigenschaften.