应用程序设置界面

时间:2011-09-17 08:22:48

标签: c# design-patterns interface application-settings

Reed Hastings对以下SO问题做出了回应:

Which design patterns can be applied to the configuration settings problem?

  

我更喜欢创建一个用于设置查询,加载和的界面   保存。通过使用依赖注入,我可以将其注入每个   需要它的组件。

有人能给出一个代码示例吗?例如,电子邮件客户端的“设置”类和基于此“接口”(可以是DI)的FTP客户端的另一个“设置”类。我知道你可以为应用程序中的所有设置(我目前正在做)做一个全局单例,但是Reed的这个建议很有意思,想尝试一下。

1 个答案:

答案 0 :(得分:4)

对于界面,我会做这样的事情:

public interface ISettingsProvider
{
    void Load();

    T Query<T>(string key);
    void Set<T>(string key, T value);

    void Save();
}

然后我会实现该接口一次,依赖注入它,让我们说MEF。我想我会用LinqToXml实现它来加载/保存到XML,并且可能有一个Dictionary来缓存内存中的设置。另一种方法是二进制序列化你的对象并将快照转储到某个地方(这有它的缺点,例如它不是人类可读的。)

如果您只保存字符串和/或数字,那么XML是一个不错的选择。如果你只有字符串,你甚至可以抛弃泛型。