【问题标题】:Serialization throws exception序列化抛出异常
【发布时间】:2013-09-12 00:02:37
【问题描述】:

我正在做的是通过后台任务序列化类并抛出异常

无法序列化类型为“BackgroundTask.BackgroundTaskDescription.Emails”的成员 'System.Collections.Generic.IList.

我的班级结构如下图。

public sealed class BackgroundTaskDescription
{
    public string Subject { get; set; }
    public string Message { get; set; }
    public string dueTime { get; set; }
    public IList<string> Emails { get; set; }
}

我如何实现这一点。?我需要 List 用于通过后台任务存储电子邮件。

【问题讨论】:

    标签: c# windows-runtime windows-store-apps


    【解决方案1】:

    XmlSerializer 不处理 IList&lt;T&gt; 类型的属性。有一些变通方法,其中最直接的就是将属性的类型更改为List&lt;T&gt;.

    为您的类添加适当的[Serializable] 和 Xml 属性。

    添加片段,

    [Serializable]
            public sealed class BackgroundTaskDescription
            {
    
                public BackgroundTaskDescription()
                {
                    Subject = string.Empty;
                    Message = string.Empty;
                    dueTime = string.Empty;
                    Emails = new List<string>();
                }
    
                public string Subject { get; set; }
                public string Message { get; set; }
                public string dueTime { get; set; }
                public List<string> Emails { get; set; }
            }
    

    【讨论】:

    • winrt 不支持 [Serializable]。
    【解决方案2】:

    我通过改变类的结构找到了解决方案,如下所示

    public sealed class BackgroundTaskDescription
    {
        public string Subject { get; set; }
        public string Message { get; set; }
        public string dueTime { get; set; }
        public string[] Emails { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2021-10-19
      • 2015-10-28
      • 1970-01-01
      相关资源
      最近更新 更多