我正在处理一些我需要序列化/反序列化为xml的类,可以用于配置。以下是我正在尝试做的一个示例
[Serializable]
public class MyConfig
{
[XmlElement]
public string ConfigOption { get; set; }
[XmlElement]
public Uri SomeUri { get; set; }
}
我想覆盖Uri属性被序列化的方式。因此,当调用serialize方法时,我希望它看起来像这样
<MyConfig>
<ConfigOption></ConfigOption>
<SomeUri uri="" />
</MyConfig>
有没有办法插入.net序列化并覆盖所有Uri对象的序列化和反序列化方式?请注意,我不想创建一个名为MyUri的类并将其用作SomeUri的类型,我只想插入序列化序列化Uri类型的位置并覆盖该行为。
答案 0 :(得分:3)
public class MyConfig
{
[XmlElement]
public string ConfigOption { get; set; }
[XmlElement]
public MyUri SomeUri { get; set; }
}
public class MyUri
{
[XmlAttribute(Name="uri")]
public Uri SomeUri { get; set; }
}
答案 1 :(得分:2)
由于您不想为Uri
创建新的包装类,我认为您唯一的选择是MyConfig
实现IXmlSerializable
以便完全控制XML序列化过程
但是,如果你这样做,你会有一个全有或全无的方法,因为你需要完全实现序列化,而不仅仅是Uri
属性。