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

时间:2012-08-02 15:44:07

标签: c#

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

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

提前致谢!

4 个答案:

答案 0 :(得分:9)

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

这是一个简单的例子:

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;
     }
}

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

在您的计划的其他地方,您可以简单地说:

Console.WriteLine(Globals.Name);
Globals.onlineMembers.Add("Hogan");

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

答案 1 :(得分:3)

定义一些简单的Configuration(比如)类:

public static class Configuration 
{
     /*runtime properties */

    public static void LoadConfiguration(..)
    {
       /*Load from file a configuration into the static properties of the class*/
    }


    public static bool SaveConfiguration(...)
    {
       /*Save static properties of the class into the configuration file*/
    }
}

如果由于某种原因错过配置文件,请不要忘记默认配置

希望这有帮助。

答案 2 :(得分:0)

听起来像Settings项目页面的完美使用。您可以设置默认值,可以在应用程序的运行之间修改和保存它们。

答案 3 :(得分:0)

您可以拥有一个带静态属性的静态类来获取和设置