在一个项目中,我使用datamember将类序列化为xml文件,例如
[DataMember]
public string Member1;
稍后我查询xml以获取一个值,例如:
XmlNode1.SelectSingleNode("Member1");
是否有可能将上面的Member1
变为变量,因此当我将DataMember
名称更改为Member2
时,查询中的Member1
可以更改为{ {1}}自动,而不是手动更改它?
答案 0 :(得分:1)
我不确定我理解您希望实现的目标,但我想如果您希望能够集中控制序列化的输出,您可以在公共静态类中定义标记。
static class SerializationConstants
{
public static string MemberTag = "Member1"; //or "Member2"
}
然后在您的数据库中,您可以使用具有Name属性的属性。
[DataMember(Name=SerializationConstants.MemberTag)
public string Member1;
这将控制序列化,以便在您的代码中查询xml,您可以执行以下操作:
XmlNode1.SelectSingleNode(SerializationConstants.MemberTag)
这将是一个黑客,但我想如果我正确理解你的问题应该这样做。
答案 1 :(得分:0)
使用它时,您应该反序列化XML文件,然后您可以使用字段名来访问属性,如果您要进行重构,它们会发生变化。
答案 2 :(得分:0)
这听起来不是一个好主意。
如果您担心使用DataMember属性更改类中的属性名称,您可能需要在该类和XML查询之间使用DTO形式的抽象层。这样,您的XML查询类不关心该成员名称是否发生更改,因为您的DTO永远不会更改。只是从DTO到volitle类的映射。