2012-03-29 5 views
1

Ich möchte eine Liste von Appointment s über WCF senden. Meine Schnittstelle sieht wie folgt aus:Senden Sie eine Liste mit Terminen über WCF

[ServiceContract] 
    public interface IServices 
    { 
     [OperationContract] 
     string addAppointments(List<Appointment> appointmentList); 
    } 

Wenn ich meine WCF-Dienst aufrufen Ich bin immer die folgende Fehlermeldung erhalten:

Type 'Microsoft.Exchange.WebServices.Data.Appointment' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. See the Microsoft .NET Framework documentation for other supported types.

Mein Service sieht derzeit wie folgt aus:

class Service : IServices 
    { 
     public string addAppointments(List<Appointment> appointmentList) 
     { 
      foreach (Appointment app in appointmentList) 
      { 
       Console.WriteLine(app.Organizer.Name); 
      } 
      return "true"; 
     } 
    } 
+2

Es sieht aus wie 'Microsoft.Exchange.WebServices.Data. Termin ist eine Klasse, die Sie von woanders bekommen haben und die nicht serialisiert werden soll. –

Antwort

2

Es ist nicht dein Dienst, der schuld ist, es ist die Klasse, die du vergisst, Ernennung. Beginnen Sie mit dem Hinzufügen von [DataContract] zu Ihrer Klasse. dann [DataMember] zu jeder der Eigenschaften, die Sie weitergeben möchten.

Zum Beispiel, wenn Sie beginnen mit:

public class Appointment{ 
    public DateTime Date { get; set; } 
    public string Name { get; set; } 
} 

Sie können es durch WCF DataContractSerializer machen serializable durch diese Attribute hinzufügen:

[DataContract]  
public class Appointment{ 
    [DataMember] 
    public DateTime Date { get; set; } 

    [DataMember] 
    public string Name { get; set; } 
} 
+0

In welcher DLL finde ich den DataContract? Ich habe es mit "using System.Runtime.Serialization" versucht, aber es funktioniert nicht für mich – andreaspfr

+1

Wenn OP keine [DataContract] -Attribut auf der Entität hat, wird es einen Standardansatz und serialisieren alle öffentlichen Eigenschaften. Laut @Jesse Slicer scheint die Entität kein POCO zu sein und kann nicht serialisiert werden. http://msdn.microsoft.com/en-us/library/ms733127.aspx – StuartLC

Verwandte Themen