Vb.net 一个类有两个不同的名称空间?
这样的事情可能吗Vb.net 一个类有两个不同的名称空间?,vb.net,namespaces,Vb.net,Namespaces,这样的事情可能吗 Namespace Transaction, Document Class Signer Public Sub New() 'Do Work End Sub End Class End Namespace 我基本上希望能够从任一名称空间实例化Signer类。原因是我在事务类中错误地设置了它,需要在不破坏现有遗留代码的情况下将其迁移到文档类。如果可能的话,我不希望在两个名称空间中复制相同的签名者类。
Namespace Transaction, Document
Class Signer
Public Sub New()
'Do Work
End Sub
End Class
End Namespace
我基本上希望能够从任一名称空间实例化Signer类。原因是我在事务类中错误地设置了它,需要在不破坏现有遗留代码的情况下将其迁移到文档类。如果可能的话,我不希望在两个名称空间中复制相同的签名者类。我认为您无法做到这一点。但是,您可以在一个命名空间中定义对象,然后在另一个命名空间中创建一个名称相同的类,该类只继承第一个类,如下所示:
Namespace Transaction
Class Signer
' Signer class implementation
End Class
End Namespace
Namespace Document
Class Signer
Inherits Transaction.Signer
End Class
End Namespace
一个类只能属于一个命名空间。唯一可以做的另一件事是在另一个命名空间中复制该类。您应该能够重构代码并更改名称空间,visual studio将在您的代码中传播这些更改。您需要做的是在单独的名称空间中创建类,以便实际声明两个不同的类。将
事务
命名空间中的一个标记为已过时,并将其用作实际类的代理,这样就不会复制实现
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
名称空间事务
_
公共类签名者
作为文档签名者的私有m_实现
公共分新()
m_实现=新文档。签名者()
终点
公共子剂量测量法()
m_Implementation.DoSomething()
端接头
末级
结束命名空间
名称空间文档
公共类签名者
公共分新()
终点
公共子剂量测量法()
端接头
末级
结束命名空间
我不擅长使用VB/r/t名称空间,但这似乎真的违背了它们的目的/概念。请使用Visual Studio的重构功能。它支持名称空间的安全重命名。这就像一个符咒。我还使用了@Brian Gideon的建议,将过时的设置为+1。