控制集合序列化
本文关键字:序列化 集合 控制 | 更新日期: 2023-09-27 18:12:20
我正在工作一个项目,我需要序列化使用数据合约序列化的枚举集合。预期的结果应该如下所示
<Filters>
<MemberType>1</MemberType>
<MemberType>2</MemberType>
<MemberType>3</MemberType>
</Filters>
这是要序列化的类:
[DataContract(Name = "Filters")]
public class Filters
{
private ObservableCollection<Nullable<MemberTypeEnum>> m_enmMemberType;
[DataMember(IsRequired = false, Name = "MemberType", Order = 1, EmitDefaultValue = false)]
public ObservableCollection<Nullable<MemberTypeEnum>> MemberType
{
get
{
return m_enmMemberType;
}
set
{
if (m_enmMemberType != value)
{
m_enmMemberType = value;
NotifyPropertyChanged("MemberType");
}
}
}
}
[DataContract(Name = "MemberTypeEnum")]
public enum MemberTypeEnum
{
[EnumMember(Value="1")]
[XmlEnum(Name="1")]
T_1 = 1,
[EnumMember(Value="2")]
[XmlEnum(Name="2")]
T_2 = 2,
[EnumMember(Value="3")]
[XmlEnum(Name="3")]
T_3 = 3,
}
问题是我得到的结果略有不同:
<Filters>
<MemberType>
<MemberTypeEnum>1</MemberTypeEnum>
<MemberTypeEnum>2</MemberTypeEnum>
<MemberTypeEnum>3</MemberTypeEnum>
</MemberType>
</Filters>
是否有办法修改序列化(或者我做错了什么),以便我可以得到预期的结果?
我做了更多的研究,我发现了另一个问题似乎与我的问题有关:
CollectionDataContract序列化不添加自定义属性(datammember)
获得最多赞的答案似乎表明
"这在DataContractSerializer (DCS)中是不可能的。DCS的不允许展开集合元素
我想我需要接受这一点,并联系网络服务提供商,看看是否有可能修改合同。