首页 > 解决方案 > 作为属性和对象类型的函数参数的表达式

问题描述

我需要一个函数,它将以下内容作为参数:

目前我以相当不方便和漫长的方式做到这一点:

public static void Add<TEntity, TProperty>(TEntity e, Expression<Func<TProperty>> expression)
{
     var type = typeof(TEntity);
     var propertyName = ((MemberExpression) expression.Body).Member.Name;
}

这会导致这样的函数调用:Add(Foo, () => Foo.Bar);

但是,使用该解决方案我有几个问题:

有没有更好的解决方案?

标签: c#.netreflection.net-core

解决方案


您可以通过向 lambda 添加参数来解决第一个问题:

public static void Add<TEntity, TProperty>(TEntity e, Expression<Func<TEntity, TProperty>> expression)

Add(Foo.Bar.Element.Type, x => x.Name)

推荐阅读