我有以下代码:
Public Class Form1
Private Function Step1_Execute() As Boolean
Return Step1_Verify()
End Function
Private Function Step1_Verify() As Boolean
Return True
End Function
Private Function Step2_Execute() As Boolean
Return Step2_Verify()
End Function
Private Function Step2_Verify() As Boolean
Return True
End Function
End Class
我想要做的是能够分离代码,类似于以下(显然不起作用):
Public Class Form1
Namespace Step1
Private Function Step1_Execute() As Boolean
Return Step1_Verify()
End Function
Private Function Step1_Verify() As Boolean
Return True
End Function
End Namespace
Namespace Step2
Private Function Step2_Execute() As Boolean
Return Step2_Verify()
End Function
Private Function Step2_Verify() As Boolean
Return True
End Function
End Namespace
End Class
我想在类中使用命名空间的功能,就像让我调用Step2.Execute()而不必将Step2_放在一大堆函数前面。我不想为step1,step2等创建单独的类/模块。
有没有办法可以从类中完成命名空间功能?
答案 0 :(得分:2)
如何使用module(大部分相当于C#中的静态类)?这似乎可以很好地完成工作并为您提供您想要的参考样式。
Module Step1
Private Function Execute() As Boolean
Return Verify()
End Function
Private Function Verify() As Boolean
Return True
End Function
End Module
Module Step2
Private Function Execute() As Boolean
Return Step2_Verify()
End Function
Private Function Verify() As Boolean
Return True
End Function
End Module
如果您愿意,我相信您甚至可以将VB.NET Module
嵌套在其他类中。
刚刚意识到所有模块都有相同的契约(方法签名集),所以在这里实现一个接口实际上是有意义的,并创建该类的实例。或许还有更多的代码,但如果你想要抽象化,那么它可能是值得的。
答案 1 :(得分:1)
没有
命名空间并不存在。命名空间只是类名称的部分。因此,如果您有类System.Text.StringBuilder,则“使用System.Text”部分是对编译器的提示,如“如果找不到类型,请查找具有以'System开头的未知标识符的所有类型” .Text'在未知部分前面。
答案 2 :(得分:1)
显然你需要将它分成3个类。一个将执行代码。并且2继承了相同的接口,其中包含执行和验证方法。
执行类将包含此接口的集合,您只需按照要执行它们的顺序添加它们。