Лямбда выражение в качестве параметра метода. Как получить свойство с которым производится операция? - 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;
}
}
}