C# 应用程序设置界面

C# 应用程序设置界面,c#,design-patterns,interface,application-settings,C#,Design Patterns,Interface,Application Settings,Reed Copsey对以下问题做出了回应: 我更喜欢创建一个用于设置查询、加载和 储蓄。通过使用依赖注入,我可以将其注入到每个 需要它的组件 有人能给出一个代码示例吗?例如,一个电子邮件客户端的设置类和另一个FTP客户端的设置类基于这个可以被DI的“接口”。我知道您可以对应用程序中的所有设置执行全局单例设置(我目前正在执行),但Reed的建议很有趣,我想尝试一下。对于界面,我会执行以下操作: public interface ISettingsProvider { void Load

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

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


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

对于界面,我会执行以下操作:

public interface ISettingsProvider
{
    void Load();

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

    void Save();
}
公共接口设置提供程序
{
空荷载();
T查询(字符串键);
无效集(字符串键,T值);
作废保存();
}
然后我将实现该接口一次,并使用MEF注入依赖项。我想我应该用LinqToXml来实现它,以加载/保存到XML,并且可能有一个字典来缓存内存中的设置。另一种方法是对对象进行二进制序列化,并将快照转储到某个地方(这有其缺点,例如,它不是人类可读的)

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