I have the same classes on my server and on my web service.
I have the following WebMethod:
[WebMethod]
public int CreateOrder(List<Purchase> p, string username)
{
o.Add(new Order(p,username));
return o.Count;
}
However the following code, run at server:
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());
}
}
gives the following error: Argument '1': cannot convert from 'System.Collections.Generic.List<Purchase>' to 'localhost.Purchase[]'.
How can I transfer the list<Purchase> object to the web service?
When using web services like that, by default
List<T>gets converted into an array (T[]). Convert your list into an array by doing.ToArray()before passing it to the method.Another option is to change the web service code generation settings to use lists instead of arrays.
It seems you also have duplicate classes, both a local one called
Purchaseand the one that’s generated over the web service, also calledPurchase. Even though they have the same name, they’re two different types (their namespaces are different). You’ll either have to stick to one set of types, or use something like Automapper to map between your two sets of types.