我可以在代码中获取数据成员名称吗?

本文关键字:数据成员 获取 代码 我可以 | 更新日期: 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到意志类的映射。