我一直认为您的域模型不应该负责将自身序列化为 XML。我过去曾使用 IXmlSerializable 接口来控制我的对象的序列化方式,但理想情况下,我希望序列化的具体细节位于对象之外。
但是,我从来没有能够以一种干净的方式实际实现这一点,我想知道是否有任何我忽略的模式来实现这一点。基本上,我希望我的对象模型能够做到这一点,并且忽略 XML 序列化(或任何其他序列化),然后将其交给一些服务来抓取对象并对其进行序列化。
我试过用扩展方法来做这件事,但是当你想序列化一个类型对象的集合时,这就不够了。我已经研究过使用对象包装器和 DTO 来实现它,然后进行序列化,但是当你想要序列化时,你需要维护另一组对象并且必须创建这些对象,当你有集合时,这又会变得混乱类型对象。
唯一的另一件事是使用反射,但我担心处理开销。
有没有一种理智的方法来做我所要求的,或者我应该硬着头皮让我的对象 xml 感知?