Лямбда выражение в качестве параметра метода. Как получить свойство с которым производится операция? - C#
Формулировка задачи:
Добрый день!
Нужно в методе принимать лямбду:
Как мне из этой лямбды в методе Get получить имя свойства "ParentId"?
obj.Get(x=>x.ParentId==5);
Get(Func<WorkItem, bool> expr){ //Как получить ParentId }
Решение задачи: «Лямбда выражение в качестве параметра метода. Как получить свойство с которым производится операция?»
textual
Листинг программы
using System; using System.Linq.Expressions; namespace ConsoleApplication22 { class Program { static void Main(string[] args) { string name = GetName<ConsoleKeyInfo, ConsoleKey>(x => x.Key); Console.WriteLine(name); } private static string GetName<T, TResult>(Expression<Func<T, TResult>> member) { MemberExpression memberExpression = member.Body as MemberExpression; if (memberExpression == null) { memberExpression = (MemberExpression)((UnaryExpression)member.Body).Operand; } return memberExpression.Member.Name; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д