gpt4 book ai didi

asp.net - ASMX Web 服务 - 返回具有属性的用户定义的类

转载 作者:行者123 更新时间:2023-12-02 14:56:09 24 4
gpt4 key购买 nike

嘿,我正在尝试从 Web 方法返回用户定义的类。该类具有属性和/或方法。给定以下 Web 方法:

[WebMethod]  
public List<MenuItem> GetMenu()
{
List<MenuItem> menuItemList = new List<MenuItem>();
menuItemList.Add(new MenuItem());
menuItemList.Add(new MenuItem());
menuItemList.Add(new MenuItem());
return menuItemList;
}

现在,假设通过在新创建的控制台应用程序中添加 Web 引用来使用此 Web 服务。使用以下代码进行测试:

public void TestGetMenu()  
{
MenuService service = new MenuService.MenuService();
service.MenuItem[] menuItemList = service.GetMenu();
for (int i = 0; i < menuItemList.Length; i++)
{
Console.WriteLine(menuItemList[i].name);
}
Console.ReadKey();
}

首先,如果 MenuItem 类包含属性,则此方法不起作用...此外,如果 MenuItem 类包含方法,则对 Web 方法的调用不会失败,但该方法不在生成的代理中类..例如:menuItemList[i].getName() 不存在。为什么?我错过了什么?

//This works  
public class MenuItem
{
public string name;
public MenuItem()
{
name = "pizza";
}
}



//This crashes / doesnt work
public class MenuItem
{
private string name;
public MenuItem()
{
name = "pizza";
}
public string Name
{
get { return name; }
set { name = value; }
}
}



//This successfully calls web method, but the method does not exist during test
public class MenuItem
{
private string name;
public MenuItem()
{
name = "pizza";
}
public string getName()
{
return name;
}
}

最佳答案

只有当类可序列化时它才会起作用,这通常意味着公共(public)字段和属性,这就是为什么您的 MenuItem 将失败,因为您的客户端端不知道如何正确构造 MenuItem 类。

试试这个:

[Serializable]
public class MenuItem
{
private string name;

public MenuItem()
{
name = "pizza";
}

public string Name
{
get {
return name;
}
set {
name = value;
}
}

}

关于asp.net - ASMX Web 服务 - 返回具有属性的用户定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839637/

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