c # -Serialisierung - komplexer Typ, der einfachen Inhalt mit Attributen enthält

Ich habe eine vorhandene Lösung, die svcutil verwendet hat, um eine Reihe von Klassen basierend auf einem XSD-Schema zu erstellen. Ich muss jetzt Änderungen an diesem Schema vornehmen und bin auf einen Stolperstein gestoßen.

Das Schema wird mit folgenden Typen erweitert:

<xsd:complexType name="Awkward">
  <xsd:sequence>
    <xsd:element name="awkward1" type="tt:AwkwardChild" nillable="true">      
    </xsd:element>
    <xsd:element name="awkward2" type="tt:AwkwardChild" nillable="true">
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="AwkwardChild">
  <xsd:simpleContent>
    <xsd:extension base="tt:AwkwardChildType">
      <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

<xsd:simpleType name="AwkwardChildType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="Dependent"/>
    <xsd:enumeration value="In between"/>
    <xsd:enumeration value="Independent"/>
  </xsd:restriction>
</xsd:simpleType>

Was zu einer XML-Ausgabe wie dieser führen würde:

<Awkward>
  <awkward1 id="z1">Dependent</awkward1>
  <awkward2 id="z2">Independent</awkward2>
</Awkward>

SVCUtil verschluckt sich beim Versuch, diese Beschwerde zu erzeugen

"Typ 'AwkwardChild' im Namespace tt kann nicht importiert werden. Komplexe Typen mit einfacher Inhaltserweiterung werden nicht unterstützt. Ändern Sie entweder das Schema, damit die Typen Datenvertragstypen zugeordnet werden können, oder verwenden Sie ImporXmlType oder verwenden Sie einen anderen Serializer."

Und ich denke, dass ich das verstehe, da es versucht, einen Zeichenfolgentyp auszugeben, aber Attribute mit einbezieht.

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, eine Klasse mit Code zu versehen, um diese Art von Ausgabe zu erzielen, aber ich kann nicht herausfinden, wie die Zeichenfolge im XML-Knoten als "einfacher Inhalt" angezeigt wird, anstatt als untergeordnetes Element, z diese Klasse:

[DataContractAttribute(Name = "AwkwardChild", Namespace = "tt")]
    public class Awkward
    {
        [DataContractAttribute(Name="id")]
        public string id { get; set; }

        //What do I put here to get this to appear as the content of 
        //the awkward node, not in an element?
        public string nodecontent { get; set; }
    }

Könnte mich jemand in die richtige Richtung weisen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage