C# - 重新初始化静态类?

标签 c# class static

我正在处理的 Web 应用程序中有一个类保存客户端设置。对于某些背景,我不拥有此类,更改它不是一种选择。我们最近添加了一些逻辑来将设置存储在数据库中,我的任务是创建一个页面来编辑它们,这很公平。

这是我的问题;这些设置保存在一个静态类中,并且它们本身是静态的、只读的属性。例如

public static class Settings
{
 public static readonly setting1 = SettingmanagerClass.GetSetting("setting1");
 public static readonly setting2 = SettingmanagerClass.GetSetting("setting2");
 public static readonly setting3 = SettingmanagerClass.GetSetting("setting3");
}

现在,例如,通过我写的页面,我们将setting2的值改为“Happy Variable”;它可以很好地保存到数据库中,但现在我需要将其作为新值反射(reflect)在网络应用程序中。由于它是静态类的静态只读属性,因此它只会在应用首次连接时被调用,并且无法手动设置。

重申一下,我不拥有原始类,因此“仅使属性可写”不是(当前)有效的选项。通常我会和我的老板讨论这个问题,他会做出判断,并可能允许我修改另一个类,但我无法做出那个决定,而且他这周不在办公室。

所以基本上; Web 应用程序开始运行后,有什么方法可以重新初始化静态类?我只需要它重新加载它的所有属性,就好像应用程序刚刚重建并重新启动一样。

最佳答案

  ConstructorInfo constructor = typeof(Settings).GetConstructor(BindingFlags.Static | BindingFlags.NonPublic,null, new Type[0], null);
  constructor.Invoke(null, null);

关于C# - 重新初始化静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283029/

相关文章:

c# - 如何通过调用构造函数提供只读属性的值?

c# - 具有嵌套方法的 TransactionScope - MySQL

c# - 使用上传字段时 Azure 上的超时

java - 将过时的存储类转换为更新的类

iOS/Cocoa 数据 Controller 类 - 这是标准做法吗?

枚举类型的 C++ 静态成员变量无法编译

java - 什么时候不要在 Java 中使用 static 关键字?

python - 如何使 Tkinter 窗口不可调整大小?

c# - 我的软阴影代码有什么问题?

c# - 在多线程环境中引发事件