0

あるプロジェクトでは、datamember を使用してクラスを xml ファイルにシリアル化します。

[DataMember]
public string Member1;

後で、次のように xml にクエリを実行して 1 つの値を取得します。

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 ファイルを操作するときは、XML ファイルを逆シリアル化する必要があります。その後、フィールド名を使用してプロパティにアクセスできます。リファクタリングを行うと、それらは変更されます。

于 2011-05-13T16:38:07.567 に答える
0

これは素晴らしいアイデアとは思えません。

DataMember 属性を使用してクラス内でプロパティ名が変更されることに懸念がある場合は、おそらく、そのクラスと XML クエリの間に DTO の形式で抽象化のレイヤーが必要になるでしょう。そうすれば、XML クエリ クラスは、DTO が変更されないため、そのメンバー名が変更されるかどうかを気にしません。DTO から volitle クラスへのマッピングだけです。

于 2011-05-13T16:39:37.390 に答える