有没有办法让一个方法从一个方法返回多个泛型类型中的任何一个?例如,我有以下内容:
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
,但我会事先检查它。无论如何我可以完成这项工作吗?