6

双方向ルックアップに使用できる .NET データ構造はありますか?

問題は次のとおりです。シリアライゼーション。オブジェクトには、定義済みの 10 個の静的オブジェクトの 1 つを指すフィールドが含まれています。ファイルに書き込むときは、10 個のオブジェクトのどれが参照されているかを表す 1 文字を書き込みます。この時点で、参照されているオブジェクトに基づいて文字コードを取得できるルックアップ データ構造が必要です。逆シリアル化するときは、逆にする必要があります。このようなデータ構造を使用できる場所は他にもたくさん考えられます。

4

2 に答える 2

5

めったに変更されない10のケースのみの場合、Switchステートメントを使用するいくつかのメソッドでおそらく十分です。

静的オブジェクトを制御できる場合は、すべて「シリアル化コード」文字を返す新しいインターフェイスを実装できます。

public interface IStaticObject
{
    char SerializationCode { get; };
}

したがって、その方向に進むのは簡単です:someObject.SerializationCode。次に、静的オブジェクトすべてに、Dictionaryを持つシングルトンインスタンスにSerializationCodeを登録するコンストラクターを使用させることもできます。

public class SomeStaticObject : IStaticObject
{
    public void SomeStaticObject()
    {
        StaticObjectRegistrar.Register(this.SerializationCode, this);
    }

    public char SerializationCode
    {
        get
        {
            return ?;
        }
    }
}

デシリアライズでは、文字を取得し、そのディクショナリを実行して静的オブジェクトを元に戻します。

于 2009-07-02T15:19:52.447 に答える