2011-07-27 35 views
0

我已經定義了以下方法TypeArgumentException在Silverlight lambda表達式

public static Expression<Func<T,dynamic>> CreateExpression(string propName) 
{ 
ParameterExpression param = Expression.Parameter(typeof(T)); 

MemberExpression aggregator = Expression.PropertyOrField(parameter,propName); 

return Expression.Lambda<Func<T,dynamic>>(aggregator,param); 
} 

代碼編譯正常,但在運行中的最後一行 拋出ArgumentException的說明System.Int32「類型的表達式不能用於返回類型'System.Object'

我錯過了什麼嗎?

在此先感謝

回答

1

使用Expression.Convert。這將添加您將Int32基本類型(或您引用的任何基本類型)轉換爲對象所需的裝箱轉換。

+0

在這種情況下,以下EntityQuery失敗。 動態關鍵字是不是意味着我可以將任何東西放入變量中,它會在運行時解析? – user759141

+0

「*以下* EntityQuery失敗」......咦?你在評論中加了括號嗎?還是我瘋了?你能否提供一個你的用法的例子,所以我們可以發佈一個具體的答案。 –