我有以下的輔助方法:沒有拳擊或類型參數轉換爲通用類型參數
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
我想在另一個助手使用這種方法從另一個方法內部:
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
但後來我得到的錯誤:
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'MyExtensions.CreateRequest()'. There is no boxing conversion or type parameter conversion from 'T' to 'MyNamespace.Request'.
有沒有辦法投了「T」型,這樣的createRequest竟被d使用它沒有問題?
編輯:
我知道我可以做兩件事情:
- 鬆開的createRequest約束或
- 緊約束上的地圖。
但我不能做第一次,因爲在CreateRequest我的用戶屬性的請求類,我不能做第二次,因爲我用其他類型(不從繼承請求)與地圖功能。
它的意思是:「要麼或無」 – 2012-08-06 06:59:57