3

私は2つのシリアライズ可能なクラスを持っています:

[Serializable]
public class Word
{
    public List<string> similes;
}

.

[Serializable]
public class Lexicon
{
    public List<Word> words;
}

両方のクラスは別々に XML ファイルとして保存されますが、Lexicon の XML ファイルは次のようになります。

<Word>
    <Similes>
        <string>Hello</string>
        <string>Hi</string>
    </Similes>
</Word>

<Word>
    <Similes>
        <string>Goodbye</string>
        <string>Bye</string>
    </Similes>
</Word>

<Lexicon>
    <Words>
        <Word>
            <Similes>
                <string>Hello</string>
                <string>Hi</string>
            </Similes>
        </Word>
        <Word>
            <Similes>
                <string>Goodbye</string>
                <string>Bye</string>
            </Similes>
        </Word>
    </Words>
</Lexicon>

そして、それはたった2つの言葉で!より多くの単語が追加されると、これがすぐに手に負えなくなることがわかります。さらに、「こんにちは、こんにちは」という単語は、逆シリアル化されると、逆シリアル化されたレキシコン内に格納されているオブジェクトとは異なるオブジェクトになります (同じオブジェクトを参照する必要がある場合)。

基本的に、シリアル化された辞書ファイルが、xml を複製する代わりに Word インスタンスをシリアル化することによって生成されたファイルを参照するようにする方法はありますか?

4

1 に答える 1

2

シリアル化可能なものに wordID を追加し、Wordこの ID を Lexicon クラスで参照できます。

[Serializable]
public class Word
{
    public string WordID;
    public List<string> similes;
}

あなたの単語クラス..

<Word>
    <WordID>1</WordID>
    <Similes>
        <string>Hello</string>
        <string>Hi</string>
    </Similes>
</Word>

レキシコンクラス

public class Lexicon
{
    public List<string> wordIDs;
}

レキシコンは次のようになります

<Lexicon>
    <WordIDs>
        <string>1</string>
        <string>2</string>            
    </WordIDs>
</Lexicon>
于 2013-08-19T00:42:14.943 に答える