c # serializacja - typ złożony zawierający prostą treść z atrybutami

Mam istniejące rozwiązanie, które wykorzystało svcutil do stworzenia zestawu klas opartych na schemacie XSD. Teraz muszę wprowadzić zmiany w tym schemacie i natknąłem się na blokadę.

Schemat zostanie rozszerzony o następujące typy:

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

Co spowodowałoby, że wynik XML byłby mniej więcej taki:

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

SVCUtil dusi się podczas próby wygenerowania tego narzekania

„Typ„ AwkwardChild ”w przestrzeni nazw tt nie może zostać zaimportowany. Typy złożone z prostym rozszerzeniem treści nie są obsługiwane. Zmień schemat tak, aby typy mogły mapować na typy umów danych lub użyj ImporXmlType lub użyj innego serializatora.

I myślę, że rozumiem to, ponieważ próbuje wyprowadzić typ łańcucha, ale dołącza do niego atrybuty.

Próbuję dowiedzieć się, czy istnieje sposób, aby ręcznie kodować klasę w celu uzyskania tego rodzaju danych wyjściowych, ale nie mogę wymyślić sposobu, aby ciąg pojawił się jako „prosta treść” w węźle xml, a nie jako element podrzędny, np ta klasa:

[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; }
    }

Czy ktoś mógłby wskazać mi właściwy kierunek?

questionAnswers(1)

yourAnswerToTheQuestion