方法有一些无效的参数?

Mog*_*gli 6 c# web-services winforms

我将数据从Windows窗体发送到Web服务的形式ArrayList.在Web服务声明我的方法是这样的:

[WebMethod]
public int SaveSelectedOffers(ArrayList offers, int selectedRows)
{

}
Run Code Online (Sandbox Code Playgroud)

在Windows窗体中,点击按钮,我的代码是:

private void offersAvailableSubmit_Click(object sender, EventArgs e)
{
    ArrayList options;
    options.Add("item 1");
    options.Add("item 2");
    options.Add("item 2");
    //In this line of code it is showing error that Argument 1: cannot convert from 'System.Collections.ArrayList' to 'object[]'
    int rowsAffected = serviceCaller.SaveSelectedOffers(options, rowCount); 
}
Run Code Online (Sandbox Code Playgroud)
  1. 选项的数据类型是ArrayList在Web服务中我也使用ArrayList变量类型来保存此值,那么为什么会出现此错误?

  2. 将参数发送到Web服务是否正确?或者还有其他方法吗?

Mik*_*oud 8

Web服务无法传递复杂类型ArrayList,或者至少没有一些配置,因此只需简化Web服务即可.把它改成这个:

public int SaveSelectedOffers(object[] offers, int selectedRows)
Run Code Online (Sandbox Code Playgroud)

无论如何,你可以看到它是如何生成的,然后像这样调用它:

private void offersAvailableSubmit_Click(object sender, EventArgs e)
{
    object[] options = new object[3];
    options[0] = "item 1";
    options[1] = "item 2";
    options[2] = "item 2";

    int rowsAffected = serviceCaller.SaveSelectedOffers(options, rowCount); 
}
Run Code Online (Sandbox Code Playgroud)

初始化的另一个选择options,如果你正在寻找更简洁的东西,将是这样的:

object[] options = new object[] { "item 1", "item 2", "item 3" };
Run Code Online (Sandbox Code Playgroud)

  • _Very simple_ configuration:通过进入配置页面并选择通用列表类型意味着与这样的'dumbing down'相比,这是一个愉快的世界. (2认同)