无法将列表<T>传输到Web服务?

iTa*_*ayb 3 c# asp.net

我的服务器和Web服务上都有相同的类.我有以下WebMethod:

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

            return o.Count;
        }
Run Code Online (Sandbox Code Playgroud)

但是以下代码在服务器上运行:

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());
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

如何将list<Purchase>对象传输到Web服务?

Mat*_*nen 7

使用这样的Web服务时,默认情况下List<T>会转换为数组(T[]).在将列表.ToArray()传递给方法之前,将列表转换为数组.

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

看起来你也有重复的类,既可以调用本地类Purchase,也可以调用通过Web服务生成的类Purchase.尽管它们具有相同的名称,但它们是两种不同的类型(它们的名称空间不同).您要么必须坚持使用一组类型,要么使用Automapper之类的东西在两组类型之间进行映射.