我有一個方法:檢測接口的泛型類型
public void StoreUsingKey<T>(T value) where T : class, new() {
var idModel = value as IIDModel;
if (idModel != null)
Store<T>(idModel);
AddToCacheUsingKey(value);
}
,我想有選擇地調用下面的方法的基礎上,value
參數的實施IIDModel
。
public void Store<T>(T value) where T : class, IIDModel, new() {
AddModelToCache(value);
}
有沒有辦法告訴Store<T>
從StoreUsingKey<T>
的value
參數實現IIDModel
?或者我正在以這種錯誤的方式去做?
富
回答
卸下從每種方法的new()
約束允許代碼工作。問題在於我試圖將接口作爲可實例化的對象傳遞。
但是StoreUsingKey方法沒有這個約束。我如何選擇致電店鋪?上例中的錯誤「無法從'IIDModel'轉換爲'T'」。 –
kim3er
2009-07-15 15:43:27
這似乎並不奏效:'IIDModel'必須是具有公共無參數構造函數的非抽象類型,才能在通用類型或方法'Store(T)' –
Tinister
2009-07-15 16:33:21