我可以重置静态/共享类吗?

dr.*_*vil 6 .net c# vb.net static shared

我有一个shared类(static在C#中),它主要带有一些设置数据,应用程序中的任何类都可以读取并有时写入.还有一些静态属性,它们包含一些内部状态.

现在我想将这个类恢复到它的初始阶段.使用所有默认变量等.假设用户想要重置当前状态并重新开始而不重新启动应用程序.

在单例模型中,我只需使用以下内容进行更新:

Public Sub Reset() 
    _Instance = New MyClass()
End Sub
Run Code Online (Sandbox Code Playgroud)

然而,这在Shared课堂上是不可能的.有什么想法我怎么能做到这一点?或者我应该切换 Singleton?

Jar*_*Par 8

没有办法像你刚才指出的单身模型那样做.原因是没有后备数据存储来"重置".你可以做的是通过使用显式方法来初始化我们的所有数据来模拟这个.

Public Module MyClass

  Public Sub Reset()
    Field1 = 42
    Field2 = "foo"
  End Sub

  Public Shared Field1 As Integer
  Public Shared Field2 As String
End Module
Run Code Online (Sandbox Code Playgroud)

包含类与模块的版本

Public Class MyClass
  Shared Sub New()
    Reset
  End Sub
  Private Sub New()
    ' Prevent instantiation of the class
  End Sub

  Public Sub Reset()
    Field1 = 42
    Field2 = "foo"
  End Sub

  Public Shared Field1 As Integer
  Public Shared Field2 As String
End Class
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 5

您不能在静态类中执行此操作,因为没有静态类的实例。

两种选择是切换(返回)到单例。

或者,您可以有一个方法来重置类的每个静态成员。