这样的事情可能吗?
Namespace Transaction, Document
Class Signer
Public Sub New()
'Do Work
End Sub
End Class
End Namespace
我基本上希望能够从任一命名空间实例化Signer类。原因是我错误地将它设置在Transaction类中,需要将其迁移到Document类,而不会破坏现有的遗留代码。如果可能的话,我宁愿在两个命名空间中没有相同的Signer类。
答案 0 :(得分:6)
我认为你不能那样做。但是,您可以在一个名称空间中定义对象,然后在另一个名称空间中创建一个同名的类,它只是继承第一个类,如下所示:
Namespace Transaction
Class Signer
' Signer class implementation
End Class
End Namespace
Namespace Document
Class Signer
Inherits Transaction.Signer
End Class
End Namespace
答案 1 :(得分:3)
您需要做的是在单独的命名空间中创建类,以便实际上声明了两个不同的类。将Transaction
命名空间中的那个标记为过时,并将其作为实际类的代理,以便您不重复实现。
Namespace Transaction
<Obsolete> _
Public Class Signer
Private m_Implementation As Document.Signer
Public Sub New()
m_Implementation = new Document.Signer()
End
Public Sub DoSomething()
m_Implementation.DoSomething()
End Sub
End Class
End Namespace
Namespace Document
Public Class Signer
Public Sub New()
End
Public Sub DoSomething()
End Sub
End Class
End Namespace
答案 2 :(得分:2)
一个类只能属于一个名称空间。您可以做的唯一其他事情是在另一个命名空间中复制该类。您应该能够重构该代码并更改命名空间,visual studio将在整个代码中传播这些更改。