默认情况下,XMLSerializer
将在执行序列化时忽略具有默认值的属性。但是我确实有一个特殊情况,即无论默认值如何,每个属性都必须序列化。
同时,默认值属性还用于其他目的,我无法删除DefaultValueAttribute
。
确切地说,我无法删除DefaultValueAttribute
,同时,我希望所有属性都可以使用XML序列化器进行序列化。
预先感谢
答案 0 :(得分:1)
第一种方式。
创建一个数据传输对象。具有与原始类相同的属性集,但没有foreach(var g in grouped = numbers.GroupBy(i => i))
{
var number = g.Key;
var freq = g.Count();
}
属性。
例如,您拥有
DefaultValue
创建
public class Person
{
[DefaultValue(30)]
public int Age { get; set; }
public string Name { get; set; }
}
序列化如下:
public class PersonDto
{
public int Age { get; set; }
public string Name { get; set; }
}
当然,您可以使用从一种对象类型到另一种对象类型的自动映射。像var person = new Person { Age = 30, Name = "John" }; // original object
var personDto = new PersonDto { Age = person.Age, Name = person.Name }; // DTO
var xs = new XmlSerializer(typeof(PersonDto));
xs.Serialize(someStream, personDto);
。
第二种方式。
使用AutoMapper
。
XmlAttributeOverrides
现在它将序列化默认值。