0

在一个项目中,我使用 datamember 将一个类序列化为一个 xml 文件,例如,

[DataMember]
public string Member1;

稍后我查询 xml 以获取一个值,例如:

XmlNode1.SelectSingleNode("Member1");

是否有可能将Member1上述内容设置为变量,以便当我将查询中的名称DataMember更改为自动更改时,而不是手动更改?Member2Member1Member2

4

3 回答 3

1

我不确定我是否理解您希望实现的目标,但我在想如果您希望能够集中控制序列化的输出,您可以在公共静态类中定义标签。

static class SerializationConstants
{
  public static string MemberTag = "Member1"; //or "Member2"
}

然后在您的数据成员中,您可以使用具有 Name 属性的属性。

[DataMember(Name=SerializationConstants.MemberTag)
public string Member1;

这将控制序列化,以便在查询 xml 的代码中,您可以执行以下操作:

XmlNode1.SelectSingleNode(SerializationConstants.MemberTag)

这将是一个黑客,但我想如果我正确理解你的问题应该这样做。

于 2011-05-13T17:19:24.793 回答
0

您应该在使用 XML 文件时对其进行反序列化,然后您可以使用字段名称来访问属性,如果您进行重构,它们会发生变化。

于 2011-05-13T16:38:07.567 回答
0

这听起来不是一个好主意。

如果您担心使用 DataMember 属性在您的类中更改属性名称,您可能需要在该类和 XML 查询之间以 DTO 形式的抽象层。这样,您的 XML 查询类就不会关心该成员名称是否更改,因为您的 DTO 永远不会更改。只是从 DTO 到 volitle 类的映射。

于 2011-05-13T16:39:37.390 回答