2012-03-29 6 views
1

のリストをWCFから送信します。私は、私は常に、次のエラーを取得しています私のWCFサービスを呼び出す場合WCFでの予定付きリストの送信

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

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.

私のサービスは現在、次のようになります。

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

それはMicrosoft.Exchange.WebServices.Data 'のように見えます

はたとえば、あなたが開始した場合。 「アポイントメント」はあなたが他のところから手に入れたクラスであり、連載しようとしていません。 –

答えて

2

イッツマイ・インタフェースは、このようになりますあなたのサービスは間違っているのではなく、それはあなたの過ごし方、アポイントメントです。 [DataContract]をクラスに追加することから始めます。 [DataMember]を渡すプロパティのそれぞれに追加します。

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

あなたはそれらの属性を追加することにより、WCFのDataContractSerializerによって、それは、シリアライズすることができます:

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

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

どのdllでDataContractを見つけることができますか?私は "System.Runtime.Serializationを使用して"しようとしましたが、それは私のためには機能しません – andreaspfr

+1

OPは、エンティティに[DataContract]属性を持っていない場合、デフォルトのアプローチをとり、すべてのパブリックプロパティをシリアル化します。 @ Jesse Slicerによると、エンティティはPOCOではないため、シリアル化できません。 http://msdn.microsoft.com/en-us/library/ms733127.aspx – StuartLC

関連する問題