如何在 VB.NET 中使用文件夹和命名空间

问题描述 投票:0回答:1

我的项目中有类/模块。我想更好地组织我的代码以使其更易于维护。如何使用具有 Namespaces 的文件夹?

vb.net namespaces
1个回答
0
投票

C# 中,只需向项目添加一个文件夹(如果需要,还可以添加一个子文件夹),然后在所需文件夹中创建一个或多个类,即可完成此操作。然而,在VB.NET中,必须使用嵌套的命名空间语句。创建文件夹和子文件夹并将所需的类/模块放入其中。这将有助于让一切井然有序。

以下内容适用于 Visual Studio 2022

创建新的 Windows 窗体应用程序

打开解决方案资源管理器

  • Visual Studio 菜单中,单击 查看
  • 选择解决方案资源管理器

出于本文的目的,我决定采用以下文件夹结构:

SolutionExplorer

创建文件夹(名称:Folder1

  • 解决方案资源管理器中,展开
  • 右键单击
  • 选择添加
  • 选择新建文件夹。输入所需的名称(例如:Folder1)

将类添加到文件夹(名称:Class1.vb

  • 解决方案资源管理器中,右键单击 (例如:Folder1)
  • 选择添加
  • 选择类...(名称:Class1.vb)
  • 单击添加

将模块添加到文件夹1

  • 解决方案资源管理器中,右键单击 (例如:Folder1)
  • 选择添加
  • 选择模块...(名称:Module1.vb)
  • 单击添加

为文件夹创建子文件夹(名称:SubFolder1

  • 解决方案资源管理器中,右键单击 (例如:Folder1)
  • 选择添加
  • 选择新建文件夹。输入所需名称(例如:SubFolder1)

将类添加到子文件夹(名称:Class1.vb

  • 解决方案资源管理器中,右键单击 (例如:SubFolder1)
  • 选择添加
  • 选择类...(名称:Class1.vb)
  • 单击添加

为文件夹创建另一个子文件夹(名称:SubFolder2

  • 解决方案资源管理器中,右键单击 (例如:Folder1)
  • 选择添加
  • 选择新建文件夹。输入所需名称(例如:SubFolder2)

创建文件夹(名称:Folder2

  • 解决方案资源管理器中,右键单击
  • 选择添加
  • 选择新建文件夹。输入所需的名称(例如:Folder2)

注意:重复上述过程,直到创建所需的文件夹结构。


现在已经创建了所需的文件夹结构,并且已根据需要添加了类/模块,我们需要修改每个类/模块中的代码以具有适当的命名空间

根命名空间是在创建项目时创建的。我们将嵌套命名空间,但 root 命名空间已经指定。

查看根命名空间:

  • Visual Studio 菜单中,单击 项目
  • 选择属性。查看根命名空间的设置。

注意:这也可以在.vbproj中找到,可以用记事本打开。

我的项目名称/根命名空间是 NamespaceDemo

ProjectName

我们将向类/模块文件添加命名空间语句以匹配文件夹结构。让我们从 Folder1\Class1.vb开始。

Folder1

Class1.vb(文件夹1\Class1.vb)

Namespace Folder1
    Public Class Class1
        Public Shared Sub Test(message As String)
            System.Diagnostics.Debug.WriteLine(message)
        End Sub
    End Class
End Namespace

如果想在Form1.vb中使用Test方法(即:Sub):

选项 1 用法:使用完全限定名称

Form1.vb:

Public Class Form1
    Private Sub Test()
        NamespaceDemo.Folder1.Class1.Test("Hello world.")
    End Sub
End Class

或者因为Form1.vb也存在于NamespaceDemo中:

选项 2 用法 - 使用部分限定名称

Form1.vb:

Public Class Form1
    Private Sub Test()
        Folder1.Class1.Test("Hello world.")
    End Sub
End Class

选项 3 用法 - 在 Form1.vb 中添加 Imports Statement 并为 Folder1 使用 alias

注意 在下面的代码中,F1 是一个 别名

Form1.vb:

Imports F1 = NamespaceDemo.Folder1

Public Class Form1
    Private Sub Test()
        F1.Class1.Test("Hello world.")
    End Sub
End Class

选项 4 用法 - 在 Form1.vb 中添加 Imports Statement 并为 Class1 使用 alias

Form1.vb:

Imports F1Class1 = NamespaceDemo.Folder1.Class1

Public Class Form1
    Private Sub Test()
        F1Class1.Test("Hello world.")
    End Sub
End Class

Folder1\Module1 添加命名空间语句

Module1.vb(文件夹1\Module1.vb)

Namespace Folder1
    Public Module Module1
        Public Sub LogMsg(message As String, Optional includeTimestamp As Boolean = True)
            If includeTimestamp Then
                message = $"{DateTime.Now.ToString("HH:mm:ss.fff")} - {message}"
            Else
                System.Diagnostics.Debug.WriteLine(message)
            End If
        End Sub
    End Module
End Namespace

现在,我们将转到 Folder1\SubFolder1\Class1.vb

Folder1SubFolder1

Class1.vb(文件夹1\子文件夹1\Class1.vb)

Namespace Folder1
    Namespace SubFolder1
        Public Class Class1
            Public Shared Function GetRandomNumber() As Integer
                'create new instance
                Dim r As Random = New Random()

                Return r.Next(1, 100)
            End Function
        End Class
    End Namespace
End Namespace

用法

如之前所示,为了更容易,请添加 Imports Statement(带有 alias)。

Form1.vb:

Imports Folder1SubFoler1Class1 = NamespaceDemo.Folder1.SubFolder1.Class1

Public Class Form1
    Private Sub Test()
        Dim val As Integer = Folder1SubFoler1Class1.GetRandomNumber()
    End Sub
End Class

接下来,让我们转到 Folder1\SubFolder2,它也恰好有一个 Class1.vb 文件。

Folder1SubFolder2

注意:对于此示例,我也选择在此命名空间中创建一个名为 Class1 的类。

Class1.vb(文件夹1\子文件夹2\Class1.vb)

Namespace Folder1
    Namespace SubFolder2
        Public Class Class1
            Public Shared Function Echo(msg As String) As String
                'https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/strings/interpolated-strings

                Return $"You sent {msg}"
            End Function
        End Class
    End Namespace
End Namespace

用法

Form1.vb:

Imports Folder1SubFolder2Class1 = NamespaceDemo.Folder1.SubFolder2.Class1

Public Class Form1
    Private Sub Test()
        Dim message As String = Folder1SubFolder2Class1.Echo("Hello world")
        Debug.WriteLine(message)
    End Sub
End Class

希望现在这个过程已经很明显了。如果您有兴趣了解如何配置一些 Visual Studio 选项,请参阅此帖子

© www.soinside.com 2019 - 2024. All rights reserved.