C#:要成为XML可序列化,从IEnumerable继承的类型必须具有Add(System.Object)的实现

LKB*_*LKB 8 c# ienumerable serialization add exchangewebservices

所以我有以下代码:

private static string FindAppointmentsAsXmlString(CalendarView calendar, ExchangeService serv)
{
    FindItemsResults<Appointment> 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();
}
Run Code Online (Sandbox Code Playgroud)

初始化序列化程序时,我得到异常:

要成为XML可序列化,从IEnumerable继承的类型必须在其继承层次结构的所有级别都具有Add(System.Object)的实现.

Microsoft.Exchange.WebServices.Data.FindItemsResults未实现Add(System.Object).

我一直在搜索,我得出的结论是我必须添加一个公共的Add(Object obj)方法.现在我不确定这个方法应该包含什么或什么时候被调用,有人能指出我正确的方向吗?Add方法需要手动添加每个约会吗?

一些链接,我发现有帮助: 这里 这里

非常感激.

Jes*_*and 4

Add()方法应该有一个对象中元素类型的参数IEnumerable。例如,如果FindItemsResults实现了IEnumerable<T>,那么您可以添加方法void Add(T value)。如果您想FindItemsResults只读,可以FindItemsResults通过扩展方法转换为 ListToList()并序列化列表而不是FindItemsResults对象本身。