“嵌入”继承了WSDL中的DataContract的DataMember

时间:2018-11-13 13:53:52

标签: c# inheritance soap wsdl asmx

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

可以做到吗?

0 个答案:

没有答案