Как правило, вы не найдете любых закрытых полей .Предполагая, что ваш типичный класс структурирован примерно так:
public class MyClass {
private int myField;
public int MyProperty {
get { return myField; }
}
}
Обратите внимание, что поле (myField
) является закрытым, тогда как свойство (MyProperty
) являетсяpublic.
Таким образом, чтобы найти поля, вы, вероятно, получите наибольшее количество пробега из:
// note: fields -> generally non-public
Type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
В то время как для свойств верно обратное: вы, скорее всего, получите наибольшее расстояниеиз:
// note: properties -> generally public
Type.GetProperties(BindingFlags.Instance | BindingFlags.Public)
Очевидно, что если вы хотите найти всех (открытых и непубличных) членов определенного вида (поле / свойство),вам придется использовать:
Type.GetFields( // (or GetProperties)
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
)