C#唯一的一对一映射字典

时间:2015-09-29 15:40:57

标签: c# .net dictionary serialization one-to-one

我正在编写一小段代码来将类序列化为二进制,可以在不知道接收端类型的情况下将其反序列化为对象。类型在程序集中定义,但您不必在方法调用中提供它(例如Deserialize<MyType>())。我想创建一种字典,允许我从Type获取int,从int获得相应的Type。 .Net中有一个对象吗?

我目前有一个包含两个private词典的类,以及一些处理和验证同步词典的添加和删除的方法。问题是,这是我试图避免的(重复数据)。

编辑:&#34;潜在重复&#34;中提出的解决方案基本上是在做我现在正在做的事情。我问是否有一个特殊的字典类已经这样做,这将允许一对一的关系,而不会重复每个键和值。

2 个答案:

答案 0 :(得分:0)

创建自己的类,其中包含两个私有词典(一个Dictionary<int,type>另一个Dictionary<type,int>)。创建两个方法IntToTypeTypeToInt,它们将从各自的词典中获取数据。然后添加将添加到两个词典的方法Add(int i, Type t)。由于这是添加到它的唯一方法(因为它们是私有的),因此无法使它们不同步。

答案 1 :(得分:0)

如果要快速访问从int获取Type,否则使用int form Type,您必须以某种方式复制数据。但是如果访问时间在您的情况下并不重要,您可以只存储一个字典并编写类似的方法来获取指定值的密钥

private Dictionary<int, Type> types;

public int GetIntForType(Type t)
{
    return types.FirstOrDefault(x => x.Value == t).Key;
}