我可以在代码中获取数据成员名称吗?
本文关键字:数据成员 获取 代码 我可以 | 更新日期: 2023-09-27 17:56:27
在一个项目中,我使用 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到意志类的映射。