Учитывая этот класс
class Foo
{
// Want to find _bar with reflection
[SomeAttribute]
private string _bar;
public string BigBar
{
get { return this._bar; }
}
}
Я хочу найти закрытый элемент _bar, который я отмечу атрибутом. Это возможно?
Я сделал это со свойствами, в которых я искал атрибут, но никогда не закрывал частное поле.
Какие флаги привязки мне нужно установить, чтобы получить приватные поля?
c#
.net
reflection
.net-attributes
Дэвид Басараб
источник
источник
Ответы:
Использование
BindingFlags.NonPublic
иBindingFlags.Instance
флагиисточник
Вы можете сделать это так же, как со свойством:
источник
Получить значение закрытой переменной, используя Reflection:
Установите значение для приватной переменной, используя Reflection:
Где objectForFooClass - ненулевой экземпляр для типа класса Foo.
источник
GetInstanceField(typeof(YourClass), instance, "someString") as string
Как получить значение частного поля в C #?Когда вы размышляете о частных участниках, вам нужно знать одну вещь: если ваше приложение работает со средним доверием (как, например, когда вы работаете в среде общего хостинга), оно не найдет их - Опция BindingFlags.NonPublic будет просто проигнорирована.
источник
источник
Хороший синтаксис с методом расширения
Вы можете получить доступ к любому закрытому полю произвольного типа с помощью кода, подобного следующему:
Для этого вам нужно определить метод расширения, который сделает всю работу за вас:
источник
Я использую этот метод лично
источник
Вот некоторые методы расширения для простого получения и установки приватных полей и свойств (свойства с установщиком):
пример использования:
Код:
источник
Да, однако вам нужно будет установить флаги Binding для поиска приватных полей (если вы ищете член за пределами экземпляра класса).
Необходимый флаг привязки: System.Reflection.BindingFlags.NonPublic
источник
Я столкнулся с этим во время поиска этого в Google, так что я понимаю, что наталкиваюсь на старый пост. Однако GetCustomAttributes требует двух параметров.
Второй параметр указывает, хотите ли вы искать иерархию наследования
источник