加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#:要成为XML可序列化,从IEnumerable继承的类型必须具有Add(Sys

发布时间:2020-12-15 08:03:39 所属栏目:百科 来源:网络整理
导读:所以我有以下代码: private static string FindAppointmentsAsXmlString(CalendarView calendar,ExchangeService serv) { FindItemsResults appointments = serv.FindAppointments(WellKnownFolderName.Calendar,calendar);var serializer = new XmlSeriali
所以我有以下代码:
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方法需要手动添加每个约会吗?

我发现一些有用的链接:
here
here

非常感激.

解决方法

Add()方法应该具有IEnumerable对象中元素类型的单个参数.例如,如果FindItemsResults实现IEnumerable< T>然后你可以添加方法void Add(T value).如果希望FindItemsResults为只读,则可以通过ToList()扩展方法将FindItemsResults转换为List,并序列化列表而不是FindItemsResults对象本身.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读