Brak pobierania pól z GetType (). GetFields z BindingFlag.Default
Używam klas Reflection, aby uzyskać wszystkie pola wewnątrz pewnego obiektu. Mój problem polega jednak na tym, że działa idealnie, gdy pola znajdują się w normalnej klasie, np .:
class test
{
string test1 = string.Empty;
string test2 = string.Empty;
}
Tutaj otrzymuję zarówno test1, jak i test2, mój problem polega na tym, że używam abstrakcji, a tym samym kilku klas połączonych.
Mam coś takiego:
class test3 : test2
{
string test4 = string.Empty;
string test5 = string.Empty;
}
class test2 : test1
{
string test2 = string.Empty;
string test3 = string.Empty;
}
class test1
{
string test0 = string.Empty;
string test1 = string.Empty;
}
Ale kiedy go uruchomię, nie odbieram pól z powrotemGetType().GetFields(BindingFlag.Default)
.
Każdy z tych pól ma również własność,get; set;
dołączony do tego. Kiedy uruchamiam kod, otrzymuję właściwości aż do testu1, ale nie do rzeczywistych pól.
To jest kod, który próbuję pobrać z pól:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
Próbowałem też:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
Używam tego samego kodu do właściwości:
PropertyInfo[] properties = Obj.GetType().GetProperties(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
foreach (PropertyInfo property in properties)
Jakieś pomysły, dlaczego otrzymuję właściwości z abstrakcyjnych klas, ale nie pola?