0

さまざまな言語をサポートする XML ファイルを扱っています。XDocument/XElement (System.Xml.Serialization を使用) を使用して、この XML を C# クラスに解析したいと考えています。XML は少し複雑ですが、達成したいことは単純なはずですが、理解できません。

Basix XML の例:

<root>
    <word_EN>Hello</word_EN>
    <word_DE>Hallo</word_DE>
    <word_FR>Bonjour</word_FR>
<root>

パーサーをどのように見せたいか:

[XmlRoot("root")]
public class Root
{
    [XmlElement("word_" + LanguageSetting.SUFFIX)]
    public string word { get; set; }
}

別のクラスから接尾辞を取得したいのですが、それを変更できるようにしたいと考えています。サフィックスを const 文字列として設定できますが、変更できません。グローバル変数の使用も機能しません。

static class LanguageSetting
{
    private static string _suffix = "EN";
    public static string SUFFIX
    {
        get { return _suffix; }
        set { _suffix = value; }
    }
}

エラー: 属性引数は、定数式、typeof 式、または属性パラメーター タイプの配列作成式でなければなりません

接尾辞を追加する適切な方法は何ですか?

4

1 に答える 1

1

これを行う正しい方法は、言語サフィックスをword要素の XML 属性にすることですが、これは不可能な場合があります。

このエラーが発生するのは、コンパイル時の定数を属性装飾で使用する必要があるためです。LanguageSetting.Suffix静的ですが、定数ではありません。const代わりにキーワードを使用してみてください。

XML では、さまざまなタグ名がさまざまなオブジェクト タイプを表します。現在の XML ドキュメントに対する最善の解決策は、サポートされている言語ごとに個別のクラスを用意し、すべて共通のクラス (例: ) から継承することですWordBase

于 2013-10-29T08:18:01.623 に答える