向Web服务发送对象列表.Net的问题

时间:2009-08-13 15:33:46

标签: .net web-services asmx

我有一个看起来像这样的网络服务

    [WebMethod]
    public int Import(System.Collections.Generic.List<Record> importRecords)
    {
        int count = 0;
        if (importRecords != null && importRecords.Count > 1)
        {
            DataLayer datalayer = new DataLayer();
            foreach (Record brec in importRecords)
                if (rec != null) 
                {
                    datalayer.InsertUpdateRecord(rec);
                    count++;
                }
        }
        return count;
    }

我有一个客户端软件,希望使用此方法将数据发送到Web服务

 ImportService.BVRImportService importService = new ImportService.ImportService();
 ImportService.Record myRecord = new ImportService.Record();
 myRecord.FirstName = "Adam";
 System.Collections.Generic.List<ImportService.Record> myRecords = 
     new List<ImportService.Record>();
 myRecords.Add(myRecord);
 importService.ImportData(myRecords);

当我尝试编译客户端软件时,我不断收到此消息。

    Error   1   The best overloaded method match for 'ImportTask.ImportService.ImportService.ImportData(ImportTask.ImportService.Record[])' has some invalid arguments
Error   2   Argument '1': cannot convert from 'System.Collections.Generic.List<ImportTask.ImportService.Record>' to 'ImportTask.ImportService.BVRRecord[]'

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

看起来客户端的引用包含Record []而不是List<Record>。您可以通过调用List<Record>上的.ToArray方法来解决此问题。

importService.ImportData(myRecords.ToArray());

我也对在代码中使用Record而在错误消息中使用BVRRecord感到困惑。您是在更改解决方案中的类型名称还是实际上有两种不同的类型?如果是后者,您还需要在调用ImportData之前转换为BVRRecord类型。