我有一個通用的方法TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
,如果TResult
宣佈爲dynamic
我想執行一個不同的代碼路徑比其他類型的聲明。如何測試typeof(動態)?
對於常規的類型,你可以做的東西,如:
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
但if (typeof(TResult) == typeof(dynamic))
不能編譯。
反正有做這種決心在運行時調用該方法與聲明:
dyanmic x = Foo<int, dynamic>(list);
由於動態本身不是一個類型是什麼,我應該爲測試? IDynamicMetaObjectProvider
?
編輯 這是System.Linq.Expression評估程序的SQL文本的一部分。分支如果TResult
是動態的,具體的願望是,看起來像這樣一些僞邏輯:
if (type is struct)
create selector that initializes each element to result values
else if (type is class)
create selector that initialize each element to new instance and set member properties
else if (type is dynamic)
create selector that initializes each element to new `ExpandoObject` and populates/sets member properties
需要這個? – Gishu 2009-10-21 04:57:58