是否可以在运行时动态设置datacontract的datamember属性?基本上我需要的是在序列化时读取包含两个属性上的DataMemeber属性的类的序列化实例,但是当前的“版本”不再具有它们但我需要迁移这些属性中的旧数据集我需要的是让datacontract反序列化器读取包含这些“旧”值的数据,并使用新配置重新序列化它们(因为这些属性的数据现在已经存储和处理了)完全不同)。
这可能吗?
干杯&谢谢。 -Jörg
答案 0 :(得分:0)
您可以指定类型/已知类型 - 但不能指定AFAIK成员信息。 XmlSerializer
在这里有点宽容......旧类型是否有可能使用xml属性? (而不是数据合同属性)。
另一种选择是提供IDataContractSurrogate
- 但这并非易事。
你有没有机会用旧的属性和来装饰你所使用的新机制的属性(等)吗?
如果数据很简单(即只有一种或两种类型,简单关系),您可以使用 parallel 类来反序列化,然后复制数据(property-to-property)等)进入新的数据结构,并重新序列化。随着模型复杂性的增加,这变得越来越困难。