带有接口列表的类的C#自定义序列化

时间:2016-11-14 23:40:41

标签: c# serialization deserialization iserializable

我正在尝试找到一种方法来序列化和反序列化以下构建的ClassToSerialize:

    [Serializable]
    public interface IFoo
    {
    }

    [Serializable]
    public class BaseFoo : IFoo
    {
    }
    [Serializable]
    public class Foo1 : BaseFoo
    {
        public string Foo1_Member1 { get; set; }
        public int Foo1_Member2 { get; set; }
    }
    [Serializable]
    public class Foo2 : BaseFoo
    {
        public IList<IFoo> Foo2_Member3 { get; set; }
        public string Foo2_Member4 { get; set; }
    }
    [Serializable]
    public class ClassToSerialize
    {
        public string Class_Member1;
        public IFoo Foo;
    }

该类将被传递给API,并且在反序列化时,需要重构Foo1和Foo2的实例并将其放入“Foo”属性并且在链中进入IList&lt; IFoo&gt;或类似的对象。

我已经坚持了一天左右,而且我的想法不合时宜!

1 个答案:

答案 0 :(得分:0)

对于尝试完成类似工作的其他人:我已经在ISerializableBaseFooFoo1Foo2上实施了ClassToSerialize

我在接口中添加了FooType Type字段,并在基类上实现了它。

在实现中,我首先反序列化为BaseFoo然后,我根据类型再次反序列化为Foo1Foo2

我很想听听更好的方法。