2012-09-20 86 views

回答

1

這通常會工作,如果返回值類型是引用類型,因爲Func<T, TResult>是協變對於T;但Guid是一種值類型,這就是爲什麼您的方法不適用於Func<string, object>的有效候選人。

MSDN

差異僅適用於引用類型;如果爲變體類型參數指定值類型,則該類型參數對於生成的構造類型是不變的。

作爲一種變通方法,你可以使用lambda表達式:

Func<string, object> f = filterId => GetUserFilterValue(filterId); 
1

這是因爲Guidvalue type,因此沒有與object兼容的二進制表示。如果你需要這個方法適應於給定的簽名,你需要編寫boxesGuid爲對象的包裝功能:

Func<string, object> f = s => (object)GetUserFilterValue(s); 
+0

對不起,我意外編輯,我滾了回來...... –

+0

@ThomasLevesque:不用擔心。 – Jon