3

我有两个可序列化的类:

[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>

而这只是两个字!您可以看到随着添加更多单词,这将如何迅速失控,此外,反序列化时,“你好,嗨”单词与存储在反序列化 Lexicon 中的对象是不同的对象 - 当它们应该引用同一个对象时。

那么基本上有没有办法让序列化的 Lexicon 文件引用通过序列化 Word 实例而不是复制 xml 生成的文件?

4

1 回答 1

2

您可以将 wordID 添加到您的可序列化Word并在您的 Lexicon 类中引用此 ID

[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 回答