4

我有以下代码:

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

有没有一种方法可以从类内部完成命名空间功能?

4

3 回答 3

2

只使用一个模块(大部分相当于 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在其他类中。

编辑:

刚刚意识到所有模块都具有相同的契约(一组方法签名),因此在这里实现一个接口并创建类的实例实际上是有意义的。可能需要多一点代码,但如果你想抽象一些东西,这可能是值得的。

于 2010-05-01T18:05:30.133 回答
1

不。

命名空间并不是真正存在的。命名空间只是类名称的一部分。因此,如果您有 System.Text.StringBuilder 类,“使用 System.Text”部分是对编译器的提示,例如“如果找不到类型,请查找所有以 'System 开头的未知标识符的类型.Text' 在未知部分前面。

于 2010-05-01T17:51:06.073 回答
1

显然,您需要将其分为 3 个类。将执行代码的一种。而不是 2 继承了相同的接口,其中包含执行和验证方法。

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

于 2010-05-02T08:58:37.977 回答