项目A几乎没有重载的方法来返回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没有对interop.MSXML2.dll的引用,当我使用XMLNewChildNode()来返回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#中不可能有这样的重载吗?我错过了什么吗?
发布于 2015-03-20 10:21:52
“在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;
}
}https://stackoverflow.com/questions/29164076
复制相似问题