是否有可能在类中获得命名空间的功能?

时间:2010-05-01 17:40:21

标签: asp.net vb.net visual-studio namespaces regions

我有以下代码:

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等创建单独的类/模块。

有没有办法可以从类中完成命名空间功能?

3 个答案:

答案 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继承了相同的接口,其中包含执行和验证方法。

执行类将包含此接口的集合,您只需按照要执行它们的顺序添加它们。