Прежде всего, извините за мой плохой английский... Надеюсь, вы поймете, что я хочу сказать.
У меня проблема с небольшим кодом, где мне нужно получить значение свойств класса. (Это не мой полный проект, а концепция того, что я хочу сделать. И с этим простым кодом я заблокирован.)
Вот код: (Этот образец работает правильно.)
using System;
using System.Reflection;
class Example
{
public static void Main()
{
test Group = new test();
BindingFlags bindingFlags = BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.Static;
Group.sub.a = "allo";
Group.sub.b = "lol";
foreach (PropertyInfo property in Group.GetType().GetField("sub").FieldType.GetProperties(bindingFlags))
{
string strName = property.Name;
Console.WriteLine(strName + " = " + property.GetValue(Group.sub, null).ToString());
Console.WriteLine("---------------");
}
}
}
public class test
{
public test2 sub = new test2();
}
public class test2
{
public string a { get; set; }
public string b { get; set; }
}
Но я хочу заменить Group.sub
на динамический доступ (например, foreach
на GetField(Var)
, где это работает). Перепробовал много комбинаций, но решения так и не нашел.
property.GetValue(property.DeclaringType, null)
or
property.GetValue(Group.GetType().GetField("sub"), null)
or
property.GetValue(Group.GetType().GetField("sub").FieldType, null)
Так что я думаю, вы понимаете. Я хотел бы динамически передать экземпляр объекта Group.sub
. Потому что в моем полном проекте у меня много подклассов.
Любые идеи?