标签: serializationbinder

无法反序列化Lazy对象

我想序列化和DeSerialize一个包含Lazy Collection一些自定义对象的对象.

通常情况下一切都很好,但是,如果更改了用于序列化的类的名称空间,则会出现此问题.

SerializationBinder在反序列化时,我写了一个指向正确的类.但由于某种原因,我没有得到反序列化的值.

以下代码片段解释了我遇到的问题;

用于序列化的类:

namespace ConsoleApplication14
{
    [Serializable]
    public class MyInnerClass : ISerializable
    {
        private string _stringInInnerClassKey = "StringInInnerClass";
        public string StringInInnerClass { get; set; }

        public MyInnerClass() { }

        private MyInnerClass(SerializationInfo info, StreamingContext context)
        {
            StringInInnerClass = info.GetString(_stringInInnerClassKey);
        }

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue(_stringInInnerClassKey, StringInInnerClass);
        }
    }

    [Serializable]
    public class MyOuterClass : ISerializable
    {
        private string _collectionOfObjKey = "CollectionOfInnerObj";
        public Lazy<Collection<MyInnerClass>> CollectionOfInnerObj { get; set; }

        private MyOuterClass(SerializationInfo info, StreamingContext context) …
Run Code Online (Sandbox Code Playgroud)

c# serialization lazy-initialization serializationbinder deserialization

8
推荐指数
1
解决办法
480
查看次数