我在寻找解释而不是解决方案:在这里我注意到了。 让我说我有一个方法测试如下使用Expression。由于Func
的返回parameter
为"object"
,当我打电话的功能与价值型物业(Test<TestClass>(x => x.SomeInt))
的,该框架围绕我的表达成x=> Convert(x.SomeInt)
和.Body
不是如果类型MemberExpression
了。难道是由于boxing/unboxing
?但是这在哪里被记录。为什么.NET Framework修改调用Convert函数的值类型的表达式?
static void Test<TEntity>(Expression<Func<TEntity, object>> memberExpression)
{
//if value type, body is Convert(x.SomeInt)
var body = memberExpression.Body.ToString();
}
class TestClass
{
public int SomeInt { get; set; }
public string SomeString { get; set; }
}
static void Main(string[] args)
{
Test<TestClass>(x => x.SomeInt);
Test<TestClass>(x => x.SomeString);
}
也是在被定义的转换函数的主体? –