人。我不是在问这个问题。问题是:您对.NET IExtensibleDataObject接口有何看法以及在稳定性方面使用的整个机制?你用过吗?如果我怀疑我的业务对象会随着时间变形,这是一个合理的解决方案吗?它似乎可以支持新版本的类中的新成员,但似乎IExtensibleDataObject类实现对旧成员类型的更改不稳定。 可能你对这个机制有一些批评,我很乐意听到它。
答案 0 :(得分:1)
它完成了它的工作,它允许您安全地往返意外数据而不会丢失。允许旧客户端与新服务器通信,新客户端与旧服务器通信。
重新“改变旧成员类型”;如果你的意思是你已经改变了现有成员的定义,那么坦率地说所有的赌注都是关闭的。大多数序列化程序处理有关数据的契约(隐式或显式)。如果您更改成员,则表示您违反了合同。
通常最好替换成员而不是更改成员;或者更好 - 版本整个DTO(即发布新的合同,与原始合同无关)。
实际上,我对这个界面的最大抱怨是它处理一个具体的实现(ExtensionDataObject
)。但是,从维护序列化实用程序库的人的角度来看,这与我的特定的异想天开更相关......