Получить имя свойства от делегата i => i.Name - PullRequest
1 голос
/ 17 ноября 2009

есть ли какой-либо способ в .Net 2.0 получить имя свойства из делегата ?: i => i.Name

Когда я звоню: var property = MyMethod (i => i.Name);

Я хочу, чтобы MyMethod возвращал строку «Имя». Таким образом, значением свойства должно быть «Имя».

В .Net 3.5 есть простой способ сделать это (Expression Tree), но я должен использовать только 2.0 Framework.

Chris

Ответы [ 2 ]

3 голосов
/ 17 ноября 2009

В .NET 2.0 вам нужно получить целевой метод из тела, вызвать MethodBase.GetMethodBody и затем проанализировать IL. Я подозреваю, что это будет нелегкой задачей.

Один из вариантов - использовать дерево выражений Mono в их реализации System.Core против .NET 2.0, но все же компилировать с помощью компилятора C # 3. Я слышал сообщения, что это работает нормально, но это немного радикальный обходной путь.

3 голосов
/ 17 ноября 2009

Нет, это невозможно, потому что .NET 2.0 не поддерживает деревья выражений. Анонимный делегат всегда компилируется, его нельзя проанализировать как выражение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...