Mar*_*man 5 c# xml-serialization xml-deserialization
我正在尝试使用字符串属性创建用于序列化/反序列化的ac#对象.该属性需要生成一个元素,并且还具有一个属性:
例如:
...
<Comment Name="CommentName"></Comment>
...
Run Code Online (Sandbox Code Playgroud)
如果属性是字符串,我无法看到如何添加属性,如果注释是具有Name和Value属性的对象,则会生成:
...
<Comment Name="CommentName">
<Value>comment value</Value>
</Comment>
...
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您需要在类型上公开这两个属性,并使用该[XmlText]属性来指示它不应生成额外的元素:
using System;
using System.Xml.Serialization;
public class Comment
{
[XmlAttribute]
public string Name { get; set; }
[XmlText]
public string Value { get; set; }
}
public class Customer
{
public int Id { get; set; }
public Comment Comment { get; set; }
}
static class Program
{
static void Main()
{
Customer cust = new Customer { Id = 1234,
Comment = new Comment { Name = "abc", Value = "def"}};
new XmlSerializer(cust.GetType()).Serialize(
Console.Out, cust);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想将这些属性展平到对象本身(Customer我的例子中的实例),你需要额外的代码来使对象模型假装适合XmlSerializer想要的东西,或者完全独立的DTO模型.
| 归档时间: |
|
| 查看次数: |
2510 次 |
| 最近记录: |