是否有可以用于双向查找的.NET数据结构?

问题是:序列化。我的对象包含一个指向10个预定义静态对象之一的字段。当写入文件时,我写了一个字符,代表要引用的10个对象中的哪一个。在这一点上,我需要一个查询数据结构,该结构将允许我基于被引用的对象获取字符代码。反序列化时,我需要做相反的事情。我可以想到很多其他地方可以使用这种数据结构。

最佳答案

在只有10种情况很少改变的情况下,使用Switch语句的几种方法可能就足够了。

如果您可以控制静态对象,则它们都可以实现一个返回“序列化代码”字符的新接口(interface):

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 ?;
        }
    }
}

反序列化时,您只需获取字符并将其运行到该字典中即可返回静态对象。

10-05 21:08