Все довольно просто.Вам нужно получить тип целевого объекта с помощью typeof
или GetType()
, если у вас есть экземпляр, как в этом случае.Затем вы можете использовать GetField
, чтобы получить нужное поле.Но тут есть подвох.GetField
по умолчанию ищет только те поля, которые являются открытыми и нестатическими.Чейз, что вам нужно дать ему BindingFlags
.Пример:
public static string ReadPrivateField(object obj, string fieldName)
{
var type = obj.GetType();
// NonPublic = obly search for private fields.
// Instance = only search for non-static fields.
var field = type.GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
return field.GetValue(obj) as string;
}