ces*_*ara 5 c# design-patterns interface application-settings
里德·科普西 (Reed Copsey) 对以下 SO 问题做出了回应:
我更喜欢创建一个用于设置查询、加载和保存的界面。通过使用依赖注入,我可以将其注入到需要它的每个组件中。
有人可以给出这样的代码示例吗?例如,电子邮件客户端的设置类和 FTP 客户端的另一个设置类,基于这个可以是 DI 的“接口”。我知道您可以对应用程序中的所有设置进行全局单例(我目前正在这样做),但是 Reed 的这个建议很有趣,并且想尝试一下。
对于界面,我会做这样的事情:
public interface ISettingsProvider
{
void Load();
T Query<T>(string key);
void Set<T>(string key, T value);
void Save();
}
Run Code Online (Sandbox Code Playgroud)
然后我会实现一次该接口,然后用 MEF 依赖注入它。我想我会用 LinqToXml 实现它来加载/保存到 XML,也许有一个字典来缓存内存中的设置。另一种方法是二进制序列化您的对象并将快照转储到某处(这有它的缺点,例如它不是人类可读的)。
如果您只保存字符串和/或数字,XML 是一个不错的选择。如果你只有字符串,你甚至可以放弃泛型。