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