Получить приватное поле по свойствам с отражением C # - PullRequest
1 голос
/ 15 июля 2011

На своей работе я работаю с проектом v2.0.Мне нужно знать, какое частное поле связано с каждым свойством

class Foo {

private string _bar;
public string BigBar
{
    get { return _bar; }
}}

Кто-то знает, как я могу проверить это отношение с помощью отражения

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Вам нужен декомпилятор, чтобы увидеть внутреннюю работу классов:

Декомпиляторы

1 голос
/ 15 июля 2011

Если вы ищете поля поддержки auto-like-properties , то единственный способ - посмотреть на сгенерированный IL с помощью инструмента, подобного Mono.Cecil ,например.

Вам нужно будет найти конкретный шаблон IL, а также проверить, используется ли поле поддержки только в свойстве, и больше нигде.

Шаблон будетбыть сгенерированным IL для этого фрагмента кода:

private string _foo;
public string Foo { get { return _foo; } set { _foo = value; } }

(get и set необязательны, но должен присутствовать хотя бы один)

0 голосов
/ 15 июля 2011

Хотя вы можете сделать это только с Reflection для автоматически реализованных свойств, рассмотрите возможность использования этой библиотеки декомпиляции с открытым исходным кодом: http://wiki.sharpdevelop.net/ILSpy.ashx. Вы можете декомпилировать соответствующие методы и посмотреть, что они делают.

...