0

我收到编译错误

以下方法或属性 getXmlNodeValue 之间的调用不明确。

我有 3 个方法都具有相同的名称和参数,但这 3 个方法确实有 3 种不同的返回类型(doubleintstring。是否可以有 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);
4

2 回答 2

1

不,不同的返回类型不构成重载。您最好使用包含返回类型名称的约定重命名方法。

另一种方法是使用泛型使打字灵活。更多信息在这里http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

于 2013-09-06T04:43:51.427 回答
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));
    }
于 2013-09-06T05:02:26.737 回答