«Вставить» унаследованные DataMember (ы) DataContract в WSDL - PullRequest
0 голосов
/ 13 ноября 2018

В моей службе ASMX, SOAP есть следующая структура:

[DataContract]
[KnownType(typeof(B))]
public class A : somethingElse
{
    // somethingElse provides some internal-use-only properties
    [DataMember] public string MemberA { get; set; }
}

[DataContract]
public class B : A
{
    [DataMember] public string MemberB { get; set; }
}

Когда я публикую службу, WSDL будет выглядеть примерно так:

<s:complexType name="A">
  <s:complexContent mixed="false">
    <s:extension base="tns:B">
      <s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="MemberA" type="s:string" />
      </s:sequence>
    </s:extension>
  </s:complexContent>
</s:complexType>
...
<s:complexType name="B">
  <s:complexContent mixed="false">
    <s:extension base="tns:somethingElse">
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="MemberB" type="s:string" />
      </s:sequence>
    </s:extension>
  </s:complexContent>
</s:complexType>

Это будет очень полезно для меня, если второй блок (B) включает в себя свойства A напрямую, например:

<s:complexType name="B">
  <s:complexContent mixed="false">
    <s:extension base="tns:somethingElse">
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="MemberA" type="s:string" />
        <s:element minOccurs="0" maxOccurs="1" name="MemberB" type="s:string" />
      </s:sequence>
    </s:extension>
  </s:complexContent>
</s:complexType>

Можно ли это сделать?

...