你应该在哪里保存插件设置?

时间:2014-04-10 21:38:04

标签: c# .net plugins

我正在编写一个具有插件功能的应用程序。 每个插件都将存储在 / MyDocuments / AppName / PluginName / 文件夹中。 更好的是,将所有插件设置保存到应用程序设置文件,或为每个插件创建单独的设置文件?

2 个答案:

答案 0 :(得分:1)

为简单起见,将所有内容保存在一个文件中

示例

以下是插件设置的基本表示:

public class Plugin
{
    public List<PluginSetting> Settings { get; set; }
    public string Name { get; set; }
}

public class PluginSetting
{
    public string Name { get; set; }
    public object Value { get; set; }
}

为简单起见(再次),您可以使用JSON.NET来保存数据:

var plugins = new List<Plugin>(new[]
{
    new Plugin
    {
        Name = "plugin1",
        Settings = new List<PluginSetting>(new[]
        {
            new PluginSetting {Name = "volume", Value = 1.0d},
            new PluginSetting {Name = "soundSystemType", Value = "THX"}
        })
    }
});

string serializeObject = JsonConvert.SerializeObject(plugins, Formatting.Indented);

以上示例的输出:

[
  {
    "Settings": [
      {
        "Name": "volume",
        "Value": 1.0
      },
      {
        "Name": "soundSystemType",
        "Value": "THX"
      }
    ],
    "Name": "plugin1"
  }
]

将此项保存到&#39; settings.json&#39;例如。

注意

你也可以直接对你的插件使用JSON.NET它会更简单,你保存它们的状态并恢复它们,有[JsonIgnore]等属性忽略一些设置,即可能有您赢得的设置无法保存或希望在某些时候恢复。

保存数据的位置?

看一下这篇文章:

http://blogs.msdn.com/b/patricka/archive/2010/03/18/where-should-i-store-my-data-and-configuration-files-if-i-target-multiple-os-versions.aspx

答案 1 :(得分:0)

除非您希望使用设置移动插件,否则我会说:将它们与应用程序保持一致。

如果你使用带有多个主机应用程序的插件,可能会出现唯一的考虑因素。在这种情况下,您必须确定插件应用程序是否应该共享其设置。

您甚至可以选择让每个插件都具有全局设置。

如果将我的应用程序保存在应用程序注册表项的子项中。