の実装を持っている必要がありますので、私は次のコードを持っている:C#の:XMLシリアル化可能であるために、IEnumerableを継承タイプが追加(System.Objectの)
private static string FindAppointmentsAsXmlString(CalendarView calendar, ExchangeService serv)
{
FindItemsResults appointments =
serv.FindAppointments(WellKnownFolderName.Calendar, calendar);
var serializer = new XmlSerializer(appointments.GetType());
var writer = new StringWriter();
try{
serializer.Serialize(writer, appointments);
Console.WriteLine(writer.GetStringBuilder().ToString());
Console.ReadLine();
}
catch (Exception ex) {
Console.WriteLine(ex);
Console.ReadLine();
}
return writer.GetStringBuilder().ToString();
}
をシリアライザを初期化するとき、私は例外を取得します:
XML直列化可能であるためには、IEnumerableから継承する型は継承階層のすべてのレベルで のAdd(System.Object)実装を実装する必要があります。
Microsoft.Exchange.WebServices.Data.FindItemsResultsは、Add(System.Object)を実装していません。
私は検索しましたが、私はパブリックのAdd(Object obj)メソッドを追加する必要があるという結論に達しました。今私は本当にこのメソッドが含まれるべきか、それが呼び出されるべきかわからない、誰かが正しい方向に私を向けることができますか? Addメソッドは、各予定を手動で追加する必要がありますか?
Iが役に立ったと評価していくつかのリンク:感謝 here here
。
ああ..右。私は今それを試し、あなたに戻ってきます。 :) – LKB
FindItemsResultsの予定をリストに変換し、その代わりにシリアライズしました。ただし、今は例外が発生しています。** Microsoft.Exchange.WebServices.Data.Appointmentは、パラメータ化されたコンストラクタ**がないため、シリアル化できません。何か案は? –
LKB
FindItemsResultsオブジェクトグラフの何かがXmlSerializerで直接シリアル化できないため、おそらくこのエラーが発生しています。もう少し堅牢なDataContractSerializerを試すか、FindItemsResultsobjectグラフをよりシンプルな形式(POCO DTO)にすることができます。 –