C# 使用xml填充对象的设计模式

C# 使用xml填充对象的设计模式,c#,java,xml,design-patterns,object,C#,Java,Xml,Design Patterns,Object,我有一个要用xml填充的对象。我想我可能会使用接受此xml的构造函数来构建对象。但是,有没有更好的设计模式可以做到这一点?处理所有xml解析是否需要对象 谢谢大家! 最简单的方法是让XmlSerializer为您做这件事。只要修饰它(如果必要的话),让它知道如何映射xml,并调用反序列化。如果您将xml作为需要特殊解析的字符串接收,我想您可以创建一个管理器/工厂来构造您的对象: var myObject = MyObjectCustomXmlSerializer.Deser

我有一个要用xml填充的对象。我想我可能会使用接受此xml的构造函数来构建对象。但是,有没有更好的设计模式可以做到这一点?处理所有xml解析是否需要对象


谢谢大家!

最简单的方法是让XmlSerializer为您做这件事。只要修饰它(如果必要的话),让它知道如何映射xml,并调用反序列化。

如果您将xml作为需要特殊解析的字符串接收,我想您可以创建一个管理器/工厂来构造您的对象:

           var myObject = MyObjectCustomXmlSerializer.Deserialize(xmlString);

不,您不应该将xml发送到构造函数,因为您将模型与反序列化逻辑耦合。您应该创建一个类来处理反序列化并返回一个实例。这一点为什么重要可能还不清楚。但是想象一下,将来您可能会有来自数据库的数据,您不想将数据库连接传递给构造函数,是吗?相反,您可以创建一个不同的类,该类使用数据库生成类的实例

以下是一些值得一读的好文章:


但是如果我创建一个反序列化器类,我的大多数类属性都应该是公共的(或者有公共设置器?)。谢谢。为了更好的设计,你应该努力使你的对象不可变。如果你有大量的字段,那么就考虑使用构造器模式。最后,如果您可以打包,也许可以考虑使用受保护的字段,以便直接设置它们。谢谢!我觉得这个建筑图案非常适合我。