在整个应用程序中可以访问的最佳数据(可能在运行时更改)?

Elu*_*FTW 4 c#

在整个应用程序中访问数据的最佳方法是什么?在我的具体示例中,我将应用程序的设置从XML文件加载到Settings-Object的实例中,我不想让这些设置为绝对常量,因为用户应该能够更改这些(并查看效果) )无需重新启动程序.

现在,我需要在其他类的方法中使用某些(属性)设置,但是这样它们是不可访问的.那么我应该在什么样的"对象"中存储设置?我不认为在我的应用程序中需要设置的每个方法都必须查看XML本身.此外,将设置实例传递给我使用的每个其他类似乎太麻烦了.

提前致谢!

Hog*_*gan 9

在C#中,我总是使用静态类来提供此功能.这里详细介绍静态类,但简单地说它们只包含静态成员而没有实例化 - 实际上它们是通过类名(和名称空间)访问的全局函数和变量.

这是一个简单的例子:

public static class Globals
{
    public static string Name { get; set; }
    public static int aNumber {get; set; }
    public static List<string> onlineMembers = new List<string>();

     static Globals()
     {
        Name = "starting name";
        aNumber = 5;
     }
}
Run Code Online (Sandbox Code Playgroud)

注意,我也使用静态初始化程序,它保证在使用/调用任何成员或函数之前的某个时刻运行.

在你的程序的其他地方你可以简单地说:

Console.WriteLine(Globals.Name);
Globals.onlineMembers.Add("Hogan");
Run Code Online (Sandbox Code Playgroud)

为了响应注释而重新声明,静态对象仅被"创建"一次.因此,您的应用程序使用对象的任何地方都将来自同一位置.根据定义,它们是全球的.要在多个位置使用此对象,只需引用对象名称和要访问的元素.