有什麼辦法讓方法返回一個方法中的任何一個泛型類型?例如,我有以下幾點:C#中的可變通用返回類型#
public static T ParseAttributeValue<T>(this XElement element, string attribute)
{
if(typeof(T) == typeof(Int32))
{
return Int32.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(Double))
{
return Double.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(String))
{
return element.Attribute(attribute).Value;
}
if(typeof(T) == typeof(ItemLookupType))
{
return Enum.Parse(typeof(T), element.Attribute(attribute).Value);
}
}
(這僅僅是一個非常快速的樣機,我知道,任何產品代碼將需要在空支票等顯著更徹底...)
但編譯器不喜歡它,抱怨Int32
不能隱式轉換爲T
(它不適用於強制轉換)。我能理解這一點。在編譯時,它無法知道什麼是T
,但我正在事先檢查它。無論如何,我可以做這項工作嗎?
否,則''只是類型參數。您使用不帶括號的類型。 –
Femaref
2012-07-19 18:46:57
@Femaref - 好點。問題被撤銷。 – 2012-07-19 18:50:30
如果將該值存儲爲Object,則可以對其進行轉換。也可以將該功能鍵入爲動態,這可能會幫助您在沒有投射的情況下進行操作。 – MrWednesday 2012-07-19 18:51:30