2009-08-13 2 views
1

ich einen Web-Service, die wie diese, und ich habeProblem mit einem Webservice eine Liste von Objekten zu senden .Net

[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; 
    } 

sieht eine Client-Software, die Daten senden an den Webservice mit dieser Methode will

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); 

Ich bekomme diese Nachricht, wenn ich versuche, die Client-Software zu kompilieren.

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[]' 

Weiß jemand, was ich falsch mache?

Antwort

2

Es sieht aus wie die Referenz, die der Client einen Datensatz [] anstelle von List<Record> enthält. Sie können das beheben, indem Sie die .ToArray-Methode auf dem List<Record> aufrufen.

importService.ImportData(myRecords.ToArray()); 

Ich bin auch verwirrt durch die Verwendung von Record in Code aber BVRRecord in den Fehlermeldungen. Ändern Sie die Typnamen in Ihrer Lösung oder gibt es tatsächlich zwei verschiedene Typen? Wenn es Letzteres ist, müssen Sie auch vor dem Aufruf von ImportData in den BVRRecord-Typ konvertieren.

+0

danke das hat funktioniert. – zSynopsis

+0

Ich habe diese Fehlermeldung kopiert, bevor ich das Objekt in Record geändert habe. es hat immer noch dasselbe gemacht. Aber Ihre Lösung hat den Fehler behoben. – zSynopsis

+2

Sie können das Problem auch beheben, indem Sie im Dialogfeld "Add Service Reference" auf die Schaltfläche "Advanced" klicken und die Option "Generic List" für Collections anstelle von Array festlegen. –