Использование FieldInfo.GetValue
fieldInfo.GetValue(this)
Кстати, вам не нужно super.GetType
- вы можете просто сделать:
this.GetType().BaseType
Равно, так как вызнать базовый тип - возможно, это будет немного быстрее
typeof(BaseClass).GetField("theField" ....)
Обновление
Я использовал this
, потому что ваш вопрос подразумевает, что код, который вы написали, является частью SuperClass
, потому чтовы написали (несмотря на то, что это не является действительным C #):
var baseType = super.GetType().BaseType;
Если это не так, и у вас есть экземпляр SuperClass
, тогда это будет делать:
var obj = new SuperClass();
var privateValue = typeof(BaseClass).GetField("theField",
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
Я бы на самом деле настоятельно рекомендовал бы против , используя obj.GetType().BaseType
- потому что ваше отражение немедленно сломается, если вы решите ввести базу между SuperClass
и BaseClass
;тогда как использование typeof(BaseClass)
не будет - если вы действительно не удалите BaseClass
из дерева наследования SuperClass
.