1

私はxmlをデシリアライズしており、そのためにこれらのクラスを使用しています

[DataContract(Name = "Validation")]
public class FieldValidationModel
{
    [DataMember]
    public string Annotation { get; set; }

    [DataMember]
    public Collection<ValidationPlanType> PlanTypes { get; set; }
}

[DataContract(Name="PlanType")]
public class ValidationPlanType
{
    [DataMember]
    public string Name { get; set; }
}

それは機能しますが、理想的には1つのクラスのみを使用したいです

[DataContract(Name = "Validation")]
public class FieldValidationModel
{
    [DataMember]
    public string Annotation { get; set; }

    [DataMember]
    public List<string> PlanTypes { get; set; }
} 

私は使用しようとしました

[DataMember]
[XmlArray, XmlArrayItem(Namespace="PlanType")]
public List<string> PlanTypes { get; set; }

運が悪ければ、ノードは今使用しなければならないものから平坦化されます

<Validation>
  <Annotation>TestAnnotation</Annotation>
  <PlanTypes>
    <PlanType>
      <Name>PlanA</Name>
    </PlanType>
    <PlanType>
      <Name>PlanB</Name>
    </PlanType>
  </PlanTypes>
</Validation>

より読みやすく

<Validation>
  <Annotation>TestAnnotation</Annotation>
  <PlanTypes>
    <PlanType>PlanA</PlanType>
    <PlanType>PlanB</PlanType>
  </PlanTypes>
</Validation>

ありがとう

4

1 に答える 1

0

私はそれを試していませんが、うまくいくはずです:

[DataContract(Name = "Validation")]
public class FieldValidationModel
{
      [DataMember]
      public string Annotation { get; set; }

      [DataMember]
      public PlanTypeCollection PlanTypes { get; set; }
}

[CollectionDataContract(ItemName="PlanType")]
public class PlanTypeCollection : Collection<string>  {}
于 2013-06-05T11:56:51.223 に答える