2

私は、datacontract シリアル化を使用して列挙型のコレクションをシリアル化する必要があるプロジェクトに取り組んでいます。期待される結果は次のようになります。

<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>

シリアライゼーションを変更する方法はありますか (または、何か間違ったことをしていますか)、期待される結果を得ることができますか?

4

1 に答える 1