【发布时间】:2017-03-28 17:41:43
【问题描述】:
我正在尝试找到一种方法来序列化和反序列化下面构建的 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
我已经被这个问题困扰了一天左右,我没有想法!
【问题讨论】:
-
你能提供你尝试过的事情的例子吗?
-
您使用什么技术/库来序列化您的课程?我没有看到任何常见的属性,例如
[Serializable]或[DataContract]。我知道 DataContractSerializer 有 KnownTypes 来处理这个问题,但是如果你不使用 DataContractSerializer,那对你没有多大好处。 -
我已经尝试了从实现 XML 属性到自定义实现
ISerializable的所有方法。但是,我希望找到一个经过验证的方向来集中精力。 -
@Joe - 我希望使用本机 .NET 代码来完成此任务。我最新的方法是在
Foo1和Foo2上实现ISerializable。这是最好的方法吗?想想看,这将是 API 的[DataContract]。 -
你能序列化被声明为接口类型的东西吗?您不能实例化
IFoo。
标签: c# serialization deserialization iserializable