首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlockingCollection默认访问器

BlockingCollection默认访问器
EN

Stack Overflow用户
提问于 2016-01-11 18:55:57
回答 1查看 715关注 0票数 0

我正在使用BlockingCollection,在尝试序列化它时遇到了一些问题。此错误发生在新XmlSerializer行上。错误是:

您必须在System.Collections.Concurrent.BlockingCollection`1[BlockingCollTest.MyItem,BlockingCollTest、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null上实现默认访问器],因为它继承自ICollection。

测试程序是:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace BlockingCollTest
{
    class Program
    {
        static void Main(string[] args)
        {
            BlockingCollection<MyItem> c = new BlockingCollection<MyItem>();
            c.Add(new MyItem("001", "Smith"));
            c.Add(new MyItem("002", "Johnson"));

            XmlSerializer serializer = new XmlSerializer(typeof(BlockingCollection<MyItem>));
        }
    }
    [Serializable]
    public class MyItem
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public MyItem() { }
        public MyItem(string id, string name) { ID = id; Name = name; }
    }
}

在尝试了几种解决方案之后,我很难理解如何解决这个错误。

问:解决BlockingCollection问题的序列化需要什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 19:29:56

BlockingCollection不是可序列化的,也不实现ISerializable。因此,即使XmlSerializer是可序列化的,也不能使用MyItem序列化它。您可以将这些项复制到单个可序列化的集合或数组(例如MyItem[]),序列化它并在反序列化返回后重新创建BlockingCollection。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34728961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档