Лямбда выражение в качестве параметра метода. Как получить свойство с которым производится операция? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Нужно в методе принимать лямбду:
obj.Get(x=>x.ParentId==5);
Как мне из этой лямбды в методе Get получить имя свойства "ParentId"?
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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы