用于初始化用户配置文件的类设计/最佳方法

时间:2009-06-29 13:14:49

标签: c# class-design

我想通过用户配置文件初始化用户配置。可以从注册表中读取该文件的路径。 该文件位于具有用户名称的文件夹中。

所以我需要以下功能:

  • 从注册表中读取字符串
  • 构建配置文件的路径
  • 将文件读入配置对象

现在有几种方法可以解决这个问题:

首先,我需要

  • 一个“helper”类用于获取文件路径(让我们称之为Shared)
  • 一个“容器” - 用于配置信息的类(我们称之为配置)

所以,Shared有一个像UserConfigurationFile这样的函数/属性,它返回配置文件的路径。

要获取文件的路径,我有一个函数InitializeUserConfigurationFile(),它在Shared的构造函数中调用:

class Shared {
    public Shared()
    {
        InitializeUserConfigurationFile();
    }

    void InitializeUserConfigurationFile()
    {
        //
        // Reads username
        //

        //
        // Reads path from Registry
        //

        //
        // etc.
        //

    }


    //
    // etc.
    //
}

有更好的建议吗?

当我想初始化我的容器时,我有不同的选择:

  • 最好在构造函数中初始化用户配置吗?

STH。像:

class Container
{
    Shared shared = new Shared();

    public Container()
    {
        InitializeUserConfiguration();
    }

    void InitializeUserConfiguration()
    {
        LoadConfiguration(shared.UserConfigurationFile);
    }

    void LoadConfiguration(string filename)
    {
        //
        // Initializes all parameters frome filename
        //
    }
}
  • 或者通过两个步骤(通过自己的方法LoadConfiguration())?

STH。像:

Shared    shared    = new Shared();
Container container = new Container();

container.LoadConfiguration(shared.UserConfigurationFile);
  • 或者通过提供文件名在Container的构造函数内部?

STH。像:

Shared    shared    = new Shared();
Container container = new Container(shared.UserConfigurationFile);

或容器中的所有内容。?

有很多方法......

我希望有人知道最好的... ...

此致

的Inno

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

对于最佳做法,使用注册表,并且不要重新发明轮子。

既然你没有提到它,你看过System.Configuration命名空间吗?

.NET Framework构建了一个经过充分测试的完美配置系统。它也是Sys Admins的域名,他们也了解配置文件和附带的工具。

所以目前还不清楚为什么要重新发明轮子,可能会让它变得不那么圆。

有实际的理由避开注册表(分发,备份),但正如仲裁者指出的那样,它不会转移到其他(未来)平台。您是否注意到这些名称空间不是以System?

开头的