在没有“包含”

时间:2015-05-25 09:06:20

标签: vb.net class include

所以,我正在VB.net中编写一个小程序,如果有替代我习惯于C / C ++的include语句,我就会徘徊?这不是让我的所有课程和职能“公开分享”。

他们的安全问题,或者将我希望在其他.vb文件中使用的所有类或函数声明为公共共享是不好的做法?

例如,假设我在passwords.vb内为密码编写哈希函数,并且我想在UI文件login.vb中使用它,为此,我会将哈希函数声明为公共共享功能在公共课堂内(除非我错过了另一种方式)。这样我就可以使用password.Hash(STRING)中的某些内容来访问它,其中password.是对我的password.vb文件的引用。

现在在C / C ++中,我会在头文件中添加一个include语句来定义我需要的所有内容。我知道头文件不存在,但除了将所有内容公开之外,没有其他方法可以包含单独的.vb文件吗?这对我来说似乎很奇怪,感觉可能有数百个公共类/变量/函数等...这在某种程度上是错误的方法吗?

我知道.dll引用作为替代方案,但如果我可以提供帮助,我真的不希望有20个.dll文件与程序相关联,或者除非它应该是这样的吗?

感谢您的帮助,我希望我所要求的是有道理的。

1 个答案:

答案 0 :(得分:2)

如果你希望这种分离,你需要做一些额外的努力。

在VB.net中并没有真正强制执行命名空间,但您可以使用它们来安排代码,以便您可以使用Imports Namespace语句。

假设我们有这个虚拟类,现在可以在代码中公开访问它,而无需任何额外的努力

Module PasswordHandler
    Public Function Hash(ByVal password As String) As String
        Return password
    End Function
End Module

但是,如果您想

,可以更改模块的命名空间
Namespace Security

    Module PasswordHandler
        Public Function Hash(ByVal password As String) As String
            Return password
        End Function
    End Module

End Namespace

现在,这将“隐藏”程序中的模块,直到您在代码顶部使用Imports ProgramName.Security语句,如下所示:

Imports IncludeSampleVB.Security

Module Module1

    Sub Main()
        Dim salt As String = PasswordHandler.Hash("dummy")
    End Sub

End Module

这样你就可以用你看起来更熟悉的方式构建你的代码:)顺便说一句,对于静态函数,你也可以简单地使用模块,它们不必是共享类,你可以在这里看到:Classes vs. Modules in VB.NET