我正在使用 Visual Studio 2013 ,尝试开发具有此成员结构的自己的API:
问题是Extensions
模块的成员在Elektro.Xml.Extensions
中公开,但在Elektro.Xml
中公开:
为什么会这样?以及如何解决它?。
Public Module Extensions
#Region " Public Extension Methods "
#Region " Type Conversion "
<Extension>
Public Function ToXDocument(ByVal sender As XmlDocument) As XDocument
...
End Function
#End Region
#End Region
End Module
Public NotInheritable Class XmlUtil
#Region " Public Methods "
Public Shared Function XmlBeautifier(...) As String
...
End Function
#End Region
End Class
答案 0 :(得分:2)
这是标准的,而不是&#34;修复&#34;。有关详细信息,请参阅Visual Basic Language Specification的第7.7节:
标准模块的成员具有两个完全限定名称,一个没有标准模块名称,另一个具有标准模块名称。命名空间中的多个标准模块可以定义具有特定名称的成员;对这两个模块之外的名称的无限制引用是不明确的。例如:
Namespace N1
Module M1
Sub S1()
End Sub
Sub S2()
End Sub
End Module
Module M2
Sub S2()
End Sub
End Module
Module M3
Sub Main()
S1() ' Valid: Calls N1.M1.S1.
N1.S1() ' Valid: Calls N1.M1.S1.
S2() ' Not valid: ambiguous.
N1.S2() ' Not valid: ambiguous.
N1.M2.S2() ' Valid: Calls N1.M2.S2.
End Sub
End Module
End Namespace
答案 1 :(得分:0)
检查github中的随机第三方API(我通常会发现新技术并获取知识)我发现要解决这个问题,开发人员可以将HideModuleName
属性设置为模块和VOILÀ