我正在开发一个Visual Studio项目,该应用程序可以细分为3个部分。
每个部分的行为均独立于其他部分。每个部分都将包含自己的.vb文件集,其中将包含模块(作为static
类),类和变量,最好在该部分级别是“全局”。
组织.vb文件的最佳做法是什么?
从架构上来讲,主Module
(文件='Main.vb')将通过调用部分Module
(例如'SectionA中的SectionA)来按需调用3个部分之一。 vb')。然后,此SectionA Module
将调用其他.vb文件中包含的其他模块或类,这些文件或类将存储在单独的文件夹中。
我们会有类似的东西
Module
)Module
)Module
)Module
)Class
)如何确保文件夹“ SectionA”中包含的所有内容只能由SectionA Module
访问?这等同于将'SectionA'文件夹的所有块封装在SectionA Module
内并设置为Private
。但是,我喜欢将源代码跨多个文件(每个文件或多或少一个类)的灵活性。
到目前为止,我正在使用Namespace
进行组织,但这不能解决范围问题:'SectionA'文件夹中的任何Public Sub
都可以从任何项目文件中访问。我还尝试在命名空间中将Module(模块,类)声明设置为Private
,但看来这是禁止的
请参阅以下意图:
FILE Main.vb
Module MainModule
Sub Main()
Select Case UserChoice
Case ChoseA1
Call SectionA.DoThings()
Case ChoseA2
Call SectionA.DoOtherThings()
Case ChoseB
Call SectionB
Case ChoseC
Call SectionC
End Select
End Sub
End Module
FILE SectionA.vb
Namespace SectionA
Module Main
Private MySectionPrivateVariable
Sub DoThings()
Dim OneClass As New ClassA1
Call DoMoreThings()
End Sub
Sub DoOtherThings()
'...
End Sub
End Module
End Namespace
SectionA文件夹中的帮助文件
Namespace SectionA
Module SectionA1
Private MyModulePrivateVariable
Sub DoMoreThings()
'...
'Problem: Cannot access SectionA.MySectionPrivateVariable
End Sub
End Module
Public Class ClassA1
'...
End Class
End Namespace
FILE SectionB.vb
Namespace SectionB
Module Main
Private MySectionPrivateVariable
Sub DoManyThings()
'...
'Problem: Can access SectionA.ClassA1
'Problem: Can access SectionA.DoMoreThings()
End Sub
End Module
End Namespace
答案 0 :(得分:1)
解决此问题的最简单方法是将应用程序拆分为多个项目(每个“部分”一个)。使他们每个人都有一个具有自己的名称空间的类库项目(我建议将项目命名为与名称空间相同的名称),然后让主项目通过项目引用(而不是DLL文件引用)来引用所有类库项目。 。一旦他们进入自己的项目,就可以通过将内容设置为Friend
来控制可访问性。
或者,您可以将所有帮助程序类型嵌套在模块中,然后可以将可访问性设置为Private
,但这可能会很快变得混乱:
Namespace SectionA
Module Main
Sub DoThings()
Dim OneClass As New ClassA1
' ...
End Sub
Private Class ClassA1
' ...
End Class
End Module
End Namespace