我在尋找解釋而不是解決方案:在這裏我注意到了。 讓我說我有一個方法測試如下使用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);
}
也是在被定義的轉換函數的主體? –