Reed Copsey 对以下 SO 问题给出了此回复:
Which design patterns can be applied to the configuration settings problem?
I prefer to create an interface for setting query, loading, and saving. By using dependency injection, I can inject this into each component that requires it.
有人可以给出这方面的代码示例吗?例如,电子邮件客户端的设置类和 FTP 客户端的另一个设置类基于这个可以是 DI 的“接口(interface)”。我知道您可以为应用程序中的所有设置做一个全局单例(我目前正在做)但是 Reed 的这个建议很有趣并且想尝试一下。
最佳答案
对于界面,我会做这样的事情:
public interface ISettingsProvider
{
void Load();
T Query<T>(string key);
void Set<T>(string key, T value);
void Save();
}
然后我将实现该接口(interface)一次,并使用 MEF 进行依赖注入(inject)。我想我会用 LinqToXml 实现它以加载/保存到 XML,并且可能有一个字典来缓存内存中的设置。另一种方法是二进制序列化您的对象并在某处转储快照(这有缺点,例如,它不是人类可读的)。
如果您只保存字符串和/或数字,XML 是一个不错的选择。如果您只有字符串,您甚至可以放弃泛型。
关于c# - 应用程序设置界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453501/