5

这是我想要做的:

  • 具有应用程序范围的设置设置,其值是自定义类型的数组
  • 将自定义类型的数组序列化为 XML,而不是字符串
  • 将我的设置的序列化值保存在 app.config 中。

到目前为止,这让我望而却步。

我有一个自定义类型:

[TypeConverter(typeof(ServiceConfigurationConverter))]
[Serializable]
public class ServiceConfiguration
{
    public string Name { get; set; }
    public string Url { get; set; }
    // more
}

它有一个自定义的 TypeConverter,可以将它从字符串来回转换。我是这样写的,因为我找到的示例都是为了转换为字符串,而且如果这意味着我的值被保存到 app.config 中,我愿意序列化为字符串。但正如我们将看到的,它们不是。

如果我指示(通过直接编辑 Settings.settings 文件)这个设置的类型是MyNamespace.ServiceConfiguration[],我可以手动输入 XML 来表示数组。(我通过编写一个以编程方式构建数组然后使用XmlSerializer. .config。

这是有问题的,因为我希望人们能够在 app.config 中以 XML 形式查看属性值,并且能够在需要时更改它们。如果它不是从 app.config 写入和读取的,则它不是运行时可配置的。

如果我在 app.config 下手动创建一个条目applicationSettings,并在我的序列化数组中输入设置值,设置设计器会询问我是否要更新设置文件值,然后这样做 - 但删除了我输入的条目在下applicationSettings

如有必要,我愿意考虑为我的自定义类型编写某种设计器,但我不知道那会是哪种设计器。

(我知道如果我只是将属性类型更改为“字符串”,我可以将序列化的 XML 保存为字符串并避免整个问题。但我想要的是一个类型是我的自定义类型的属性,而不是我想要的重组。)

谁能告诉我如何使用自定义类型实现本文顶部的三个目标?

非常感谢。

4

0 回答 0