Sau*_*eil 8 c# xml-serialization
我正在寻找谁来定制属性的序列化.我觉得这很简单,但我无法达到我想要的方式.
所以这是一个简单的例子:
类定义:
Class MyClass
{
[XmlAttribute("myAttribute")]
public int[] MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的Xml结果:
<MyClass myAttribute="1 2 3... N" />
Run Code Online (Sandbox Code Playgroud)
我做的唯一工作就是放置[XmlIgnore]属性并使用一些执行转换的代码创建另一个属性.
所以,我的问题是,有没有比创建新房产更好的方法?也许你可以创建某种类型的TypeConverter,这样串行器就可以使用它?
另外,我尝试使用Type属性但没有成功.(总是得到例外).但是从我读过的内容来看,它已经定义了数据类型.
[XmlAttribute("myAttribute", typeof(MyConverter))]
public int[] MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
另一个有趣的方式是这样的:
[XmlAttribute("myAttribute")]
[XmlConverter(typeof(MyConverter))]
public int[] MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑由于没有提供像我一样的解决方案,我最终决定选择"IXmlSerializable"解决方案.
您可以:
IXmlSerializable和处理您的类型的所有序列化/反序列化使用代理属性:
[XmlIgnore]
public int[] MyProperty { get; set; }
[XmlAttribute("myAttribute")]
public string _MyProperty
{
get
{
return string.Join(" ", MyProperty.Select(x => x.ToString()).ToArray());
}
set
{
MyProperty = value.Split(' ').Select(x => int.Parse(x)).ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2767 次 |
| 最近记录: |