【发布时间】:2017-04-20 07:42:12
【问题描述】:
我今天有一个静态函数,我传递一个属性表达式并从中创建一个字符串:
public static string SomeFunction<TModel, TProperty>(TModel model, Expression<Func<TModel, TProperty>> expression){...}
我想改变它来处理这样的表达式列表:
static string SomeFunctionForList<TModel, TProperty>(TModel model, List<Expression<Func<TModel, TProperty>>> expressions){...}
在第二种情况下,我将遍历表达式并执行我正在对它们执行的任何逻辑。
这就是我现在调用函数的方式:
SomeFunction(this, m => m.nameOfProperty)
如何调用这个函数并定义表达式列表?我正在尝试这个,但它不起作用:
SomeFunctionForList(this,
new List<Expression<Func<TModel, TProperty>>> {
{ m => m.nameOfProperty1},
{ m => m.nameOfProperty2}
});
我收到一个无法找到 TModel 和 TProperty 的编译器错误。需要明确的是,这是在不同的文件中调用的。
【问题讨论】:
-
我不确定,但我的意思是“TModel”和“TProperty”不是类型。它们是通用参数。您必须将“TModel”替换为任何模型类型,将“TProperty”替换为任何属性类型。
-
您遇到的问题是
TProperty会因每个属性而异吗? -
是的 - 基本上,我想发送一个模型和一个 Lamba 表达式列表,并让方法发挥它的魔力
标签: c# reflection lambda