例如使用这个类:
Public class InnerClass
{
string Value {get;set;}
}
public class ObjectClass
{
InnerClass Inner {get; set;}
}
用这样的方法:
public void SomeMethod<TObj, T>(Expression<Func<TObj, T>> exp) where T : InnerClass
{
// ??
}
我需要添加&#34;价值&#34;财产到exp。
调用方法:
SomeMethod(x => x.Inner);
我需要为表达式添加值:
x => x.Inner.Value
答案 0 :(得分:0)
告诉它你正在使用什么类型,否则它不会知道:
SomeMethod<ObjectClass, InnerClass>(k => k.Inner);
答案 1 :(得分:0)
将您的方法更新为
public void SomeMethod<TObject>(Expression<Func<TObject, object>> exp)
{
.....
}
然后你可以访问该属性
SomeMethod<ObjectClass>(x => x.Inner.Value);
答案 2 :(得分:0)
最后这项工作对我来说:
public void SomeMethod<TObj, T>(Expression<Func<TObj, T>> exp) where T : InnerClass
{
var newExp = Expression.Lambda<Func<TObj, string>>(
Expression.PropertyOrField(exp.Body, "Value"),
exp.Parameters);
// now I can use newExp
}