【发布时间】:2018-11-27 16:25:29
【问题描述】:
我有以下课程:
public class Foo
{
public virtual string FooProperty { get; set; }
}
public class Bar : Foo
{
public override string FooProperty { get => base.FooProperty; set => base.FooProperty = value; }
}
我定义了一个 lambda 表达式:
Expression<Func<Bar, string>> expression = (Bar b) => b.FooProperty;
当我检查 MemberExpression 的 DeclaringType 时,我得到的类型是 Foo 而不是 Bar,就像我预期的那样。这是为什么呢?
var type = (expression.Body as MemberExpression).Member.DeclaringType; // returns Foo type
【问题讨论】:
标签: c# linq lambda expression