2013-05-07 4 views
2

저는 datacontract serialization을 사용하여 enum 컬렉션을 직렬화해야하는 프로젝트를 진행하고 있습니다. 예상되는 결과는 다음 직렬화되는 클래스의 다음컬렉션 직렬화 제어

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

예상 결과를 얻을 수 있도록 직렬화를 수정하는 방법이 있습니까?

답변

0

나는 조금 더 연구를하고 난 내 관련 보인다 다른 질문을 발견 :

CollectionDataContract serialization not adding custom properties (DataMember)

가장 upvotes와 답은

"이것은 것을 제안하는 것

DataContractSerializer (DCS)에서는 불가능합니다. DCS 은 래핑되지 않은 콜렉션 요소를 허용하지 않습니다. "

계약을 수락 할 수 있는지 알아 보려면 웹 서비스 제공 업체에 문의하고 동의해야합니다.