Vb.net 从任何地方访问共享模块

Vb.net 从任何地方访问共享模块,vb.net,Vb.net,我已经将一个C源代码转换为VB,其中包含一个类记录器和一个静态类,其中包含记录器的实例 但是使用VB.NET,我不知道如何创建一个模块,我可以从同一名称空间中的其他源文件访问它 我只想像在C中一样访问对象: 或 但这只适用于同一个文件 Public Shared Module Loggers Public Shared ReadOnly MyLogger As Logger = New Logger() End Module Public Class Logger ..class co

我已经将一个C源代码转换为VB,其中包含一个
记录器
和一个
静态类
,其中包含
记录器
的实例

但是使用VB.NET,我不知道如何创建一个
模块
,我可以从同一名称空间中的其他源文件访问它

我只想像在C中一样访问对象:

但这只适用于同一个文件

Public Shared Module Loggers
    Public Shared ReadOnly MyLogger As Logger = New Logger()
End Module

Public Class Logger
..class content...
End Class

编辑:由于我也尝试了“共享”,我想在项目级别出现了一些错误。

我不知道您是如何错过这个或愚弄编译器的,但是在我的Visual Studio上,我在尝试创建共享模块时出错。模块是隐式共享的,不允许您显式应用
shared
关键字。

我不知道您是如何错过这个或愚弄编译器的,但在我的Visual Studio上,我在尝试创建共享模块时出错。模块是隐式共享的,不允许显式应用
shared
关键字。

A
Module
不能显式声明为
shared
,因为它隐式地是
shared

按以下方式更改代码,它应该可以工作:

Public Module Loggers
    Public ReadOnly MyLogger As Logger = New Logger()
End Module

Public Class Logger
    Public Sub MyMethod()

    End Sub
End Class
参考资料:


  • A
    模块
    不能明确声明为
    共享
    ,因为它隐式地是
    共享

    按以下方式更改代码,它应该可以工作:

    Public Module Loggers
        Public ReadOnly MyLogger As Logger = New Logger()
    End Module
    
    Public Class Logger
        Public Sub MyMethod()
    
        End Sub
    End Class
    
    参考资料:


    Loggers.MyLoggerThis在另一个文件中不起作用。VS中用于项目的完全限定命名空间是什么…使用该命名空间并追加。Loggers.MyLoggerI应该提到我也尝试过这个。Loggers.MyLoggerThis在另一个文件中不起作用。VS中用于项目的完全限定命名空间是什么…使用该命名空间并追加append.Loggers.MyLoggerI应该提到我也试过这个,也试过了。我添加了共享,因为这不起作用。创建一个新项目并尝试它。您是如何声明MyMethod的?我猜项目级别出现了问题。我尝试调用的方法是公共子信息(ByVal消息作为字符串,ByVal可选上下文作为字符串=Nothing)_message(“Info”,message,context)End Sub,但可能与此无关。IntelisSense甚至找不到模块。@Julien Holopainen Az声明
    类记录器
    方法为
    共享
    。不是类或模块。也已尝试。我添加了共享,因为这不起作用。创建一个新项目并尝试它。您是如何声明MyMethod的?我猜项目级别出现了问题。我尝试调用的方法是公共子信息(ByVal消息作为字符串,ByVal可选上下文作为字符串=Nothing)_message(“Info”,message,context)End Sub,但可能与此无关。IntelisSense甚至找不到模块。@Julien Holopainen Az声明
    类记录器
    方法为
    共享
    。不是类或模块。
    Public Module Loggers
        Public ReadOnly MyLogger As Logger = New Logger()
    End Module
    
    Public Class Logger
        Public Sub MyMethod()
    
        End Sub
    End Class