我最好用一个例子来解释。
我正在编写一个流畅的界面,其中包含Where方法:
public FluentSearch Where(Expression<Func<IJourney, bool>> expression)
我可以这样称呼:
.Where(j => j.Driver.Chatiness == searchResource.Chatiness)
在调试器中使用手表,我可以看到有一个值为I&#39; m的属性:
expression.Expression.Member.Name
但是,当我从这个属性创建一个手表时,我得到以下内容:
((new System.Linq.Expressions.Expression.MemberExpressionProxy((new System.Linq.Expressions.Expression.MemberExpressionProxy(expression as System.Linq.Expressions.PropertyExpression)).Expression as System.Linq.Expressions.PropertyExpression)).Member).Name
然而,编译器抱怨MemberExpressionProxy的保护级别,以及对构造函数的参数数量的抱怨。
有没有人知道如何解决这个问题并获得字符串中的名称或类型(在这种情况下为IDriver)?