C# 要保存到数据库的对象的最灵活序列化

C# 要保存到数据库的对象的最灵活序列化,c#,serialization,interface,namespaces,deserialization,C#,Serialization,Interface,Namespaces,Deserialization,给出一个类似于: public class MyObject : IInterfaceA { public IEnumerable<IInterfaceB> MyList{get; set} public MyComplexObjectX{get; set;} public MyComplexObjectY{get; set;} } 公共类MyObject:IInterfaceA { 公共IEnumerable MyList{get;set} 公共MyCom

给出一个类似于:

public class MyObject : IInterfaceA
{
    public IEnumerable<IInterfaceB> MyList{get; set}
    public MyComplexObjectX{get; set;}
    public MyComplexObjectY{get; set;}
}
公共类MyObject:IInterfaceA
{
公共IEnumerable MyList{get;set}
公共MyComplexObject{get;set;}
公共MyComplexObject{get;set;}
}
它可能有一个相当复杂的图形

有人知道序列化的最佳方法吗?这样名称空间的更改就不会成为反序列化的问题了?Json可能是一条出路吗

其次,还有一个很好的使用接口列表,泛型等。我很乐意使用DataContractSerializer的已知类型,但我想我会有名称空间更改的问题

性能、序列化对象的大小等现在对我来说不是问题


谢谢。

您使用的是关系数据库吗?假设您有
ClassB:IInterfaceB
ClassB
有更多属性,
MyList
包含
ClassB
。它是否需要反序列化为带有额外属性的
ClassB
?这种情况还会出现吗?@Rui Jarimba我会把它保存到SqlServer@Tim是的,确切的情况会出现。嗯……目前的解决方案可能会有所帮助。由于您希望避免名称空间更改成为一个问题,因此我认为内置的
typenameholling
无法工作。也许您可以使用自定义转换器实现类似的功能,但它只指定类型名,而不指定名称空间,然后名称空间在不同的上下文中解析为不同的名称空间?