我收到了编译错误
以下方法或属性之间的调用不明确 getXmlNodeValue。
我有3个方法都具有相同的名称和参数,但这3个方法确实有3种不同的返回类型(double
,int
和string
)。是否有可能有3个方法具有相同的名称和参数但返回类型不同?
如果没有,您建议我使用哪种方法?即,只需将方法名称更改为getXmlNodeText
,getXmlNodeDouble
等等或其他内容?
private static string getXmlNodeText(XmlNode node, string xPath, XmlNamespaceManager nsmgr)
{
try
{
return node.SelectSingleNode(xPath, nsmgr).InnerText;
}
catch (Exception e)
{
return string.Empty;
}
}
public static string getXmlNodeValue(XmlNode node, string xPath, XmlNamespaceManager nsmgr)
{
return getXmlNodeText(node, xPath, nsmgr);
}
public static double getXmlNodeValue(XmlNode node, string xPath, XmlNamespaceManager nsmgr)
{
return Convert.ToDouble(getXmlNodeText(node, xPath, nsmgr));
}
public static int getXmlNodeValue(XmlNode node, string xPath, XmlNamespaceManager nsmgr)
{
return Convert.ToInt32(getXmlNodeText(node, xPath, nsmgr));
}
// Usage problem:
string name = getXmlNodeValue(pitNode, "ns:name", nsmgr);
答案 0 :(得分:1)
不,不同的返回类型不构成过载。最好使用包含返回类型名称的约定重命名方法。
另一种方法是使用泛型来使键入变得灵活。 更多信息http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx
答案 1 :(得分:0)
使用如下所示的泛型来获得所需的类型值。
static void Main(string[] args)
{
int value1 = GetValue<Int16>("23");
double value2 = GetValue<double>("23.34");
}
public static T GetValue<T>(string value)
{
return (T)Convert.ChangeType(value, typeof(T));
}