c# - 无法将 list<T> 传输到 Web 服务?

标签 c# asp.net

我的服务器和网络服务上有相同的类。 我有以下网络方法:

[WebMethod]
        public int CreateOrder(List<Purchase> p, string username)
        {
            o.Add(new Order(p,username));

            return o.Count;
        }

但是下面的代码,在服务器上运行:

protected void CartRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        List<Purchase> l = ((List<Purchase>)Session["Cart"]);

        if (e.CommandName == "Order")
        {
            localhost.ValidateService WS = new localhost.ValidateService();
            WS.CreateOrder(l, Session["username"].ToString());
        }
    }

出现以下错误:Argument '1': cannot convert from 'System.Collections.Generic.List<Purchase>' to 'localhost.Purchase[]' .

如何转移 list<Purchase>反对网络服务?

最佳答案

当使用这样的网络服务时,默认情况下 List<T>被转换成一个数组(T[])。通过执行 .ToArray() 将列表转换为数组在将其传递给方法之前。

另一种选择是更改 Web 服务代码生成设置以使用列表而不是数组。

您似乎也有重复的类(class),都是本地类(class),名为 Purchase以及通过 Web 服务生成的,也称为 Purchase .尽管它们具有相同的名称,但它们是两种不同的类型(它们的 namespace 不同)。您要么必须坚持使用一组类型,要么使用类似 Automapper 的类型在你的两组类型之间进行映射。

关于c# - 无法将 list<T> 传输到 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2628579/

相关文章:

ASP.NET 数据缓存 - 应用域重启后保留内容

c# - 如何在每个请求上从 IoC 容器解析 Web API 消息处理程序/DelegatingHandler

c# - ASPNETCOMPILER(0,0) : Error ASPRUNTIME: Object reference not set to an instance of an object

c# - 无法调试 - "The breakpoint will not currently be hit. No symbols have been loaded for this document"

c# - 使用 ASP.net C# 写入网络文件夹

asp.net - 无法从传输连接读取数据: Operation canceled

asp.net - 如何在asp中为div标签和面板添加css

c# - 在 SELECT 语句中从 cookie 获取值

c# - Automapper 可以在控制台应用程序中使用吗?

c# - 推荐免费数据库用于 .net 应用程序中的商业用途