关于C#Static Readonly成员

Ika*_*aso 2 c# static readonly

我有以下情况.我的应用程序中有一些非常常见的类,它包含一个名为"BinDirectory"的静态只读字段,它保存bin目录的路径.此类中的其他字段(也是静态只读)也使用此值作为其值的基础.在当前版本上,BinDirectory被初始化为保存代码运行的目录(即Assembly.GetExecutingAssembly().CodeBase).我想扩展此类以初始化BinDirectory,以便在从我的应用程序安装程序运行时从安装程序上下文中保存"TargetDir".我可以将BinDirectory改为静态但我不想,因为它会让我对我的应用程序中常见的类进行大量更改.有人可以为这个问题提出一个优雅的解决方案吗?

Cod*_*uth 5

使用"get"访问器使其成为一个属性:

public static string BinDirectory
{
    get { return _initialisedBinDirectory; }
}
Run Code Online (Sandbox Code Playgroud)

然后在静态构造函数代码中,根据需要初始化私有变量.

编辑

延迟加载(根据评论):

public static string BinDirectory
{
    get
    {
        if (_initialisedBinDirectory == null)
            // load the variable when needed
        else
            return _initialisedBinDirectory;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样您只需在需要时加载变量,并且只要再次调用它就会重新使用它.希望您不要null将它作为有效值分类.