gpt4 book ai didi

c# - Webservice复杂类型和类继承

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:37 25 4
gpt4 key购买 nike

使用以下将 aClientArgs 用作复杂类型的 Web 服务定义:

[System.Web.Script.Services.ScriptService]
public class Controller : System.Web.Services.WebService {
[WebMethod]
public void save_client(aClientArgs client)
{
// Save client data
}
}

然后将 aClientArgs 定义为子类:

public class aArgs 
{
public string id = null;
public string name = null;
}

public class aClientArgs : aArgs
{
public string address = null;
public string website = null;
}

为 save_client 参数返回以下 WSDL 片段:

<save_client xmlns="http://tempuri.org/">
<client>
<address>string</address>
<website>string</website>
</client>
</save_client>

当我期待以下内容时:

<save_client xmlns="http://tempuri.org/">
<client>
<id>string</id>
<name>string</name>
<address>string</address>
<website>string</website>
</client>
</save_client>

因此,.NET WebService 似乎没有将继承的属性视为用于 Web 服务的参数/变量。如何让 .NET 也使用基类的属性?

最佳答案

您是如何确定 WSDL 错误的?您是否浏览到该服务并单击了 save_client 方法的链接?

那只是一个帮助页面。在这种情况下,这是错误的。单击服务说明的链接,我想您会看到以下内容:

  <s:complexType name="aClientArgs">
<s:complexContent mixed="false">
<s:extension base="tns:aArgs">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Address" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Website" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="aArgs">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
</s:sequence>
</s:complexType>

关于c# - Webservice复杂类型和类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com