具有不同 return 类型且命名空间未在使用它的另一个项目中引用的重载方法
overloading method with different return type with namespace not reference in another project consuming it
项目 A 对 return XMLNode 和 MSXML2.IXMLDOMNode 的重载方法很少,但参数不同,如下所示
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName)
{
...
return xmlNode;
}
和
static public MSXML2.IXMLDOMNode XMLNewChildNode(MSXML2.IXMLDOMNode oParent, string sName)
{
...
return ixmldomnode;
}
项目 B 没有对互操作的引用。MSXML2.dll 当我将 XMLNewChildNode() 转换为 return XMLNode 时,出现编译错误。
XmlNode oNode = XMLHelper.XMLNewChildNode2((XmlNode)oDoc, UCMCommonPTLIndep.gsUCP_DDT_ROOT_NODE);
错误:The type 'MSXML2.IXMLDOMNode' is defined in an assembly that is not referenced. You must add a reference to assembly 'Interop.MSXML2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=98ec9cb7b15b7e98'.
在 C# 中不可能有这样的重载吗?我错过了什么吗?
"Is not possible to have overloads like this in c#?"
显然是这样,只要那些重载的消费者有所需的引用。
您应该可以通过给方法不同的名称来解决这个问题,但最好将方法放在不同的 类 中。这也可以解决您的问题:
public static class XmlNodeHelper
{
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName)
{
...
return xmlNode;
}
}
public static class MSXMLHelper
{
static public MSXML2.IXMLDOMNode XMLNewChildNode(MSXML2.IXMLDOMNode oParent, string sName)
{
...
return ixmldomnode;
}
}
项目 A 对 return XMLNode 和 MSXML2.IXMLDOMNode 的重载方法很少,但参数不同,如下所示
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName)
{
...
return xmlNode;
}
和
static public MSXML2.IXMLDOMNode XMLNewChildNode(MSXML2.IXMLDOMNode oParent, string sName)
{
...
return ixmldomnode;
}
项目 B 没有对互操作的引用。MSXML2.dll 当我将 XMLNewChildNode() 转换为 return XMLNode 时,出现编译错误。
XmlNode oNode = XMLHelper.XMLNewChildNode2((XmlNode)oDoc, UCMCommonPTLIndep.gsUCP_DDT_ROOT_NODE);
错误:The type 'MSXML2.IXMLDOMNode' is defined in an assembly that is not referenced. You must add a reference to assembly 'Interop.MSXML2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=98ec9cb7b15b7e98'.
在 C# 中不可能有这样的重载吗?我错过了什么吗?
"Is not possible to have overloads like this in c#?"
显然是这样,只要那些重载的消费者有所需的引用。
您应该可以通过给方法不同的名称来解决这个问题,但最好将方法放在不同的 类 中。这也可以解决您的问题:
public static class XmlNodeHelper
{
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName)
{
...
return xmlNode;
}
}
public static class MSXMLHelper
{
static public MSXML2.IXMLDOMNode XMLNewChildNode(MSXML2.IXMLDOMNode oParent, string sName)
{
...
return ixmldomnode;
}
}