我正在编写一小段代码来将类序列化为二进制,可以在不知道接收端类型的情况下将其反序列化为对象。类型在程序集中定义,但您不必在方法调用中提供它(例如Deserialize<MyType>()
)。我想创建一种字典,允许我从Type
获取int
,从int
获得相应的Type
。 .Net中有一个对象吗?
我目前有一个包含两个private
词典的类,以及一些处理和验证同步词典的添加和删除的方法。问题是,这是我试图避免的(重复数据)。
编辑:&#34;潜在重复&#34;中提出的解决方案基本上是在做我现在正在做的事情。我问是否有一个特殊的字典类已经这样做,这将允许一对一的关系,而不会重复每个键和值。
答案 0 :(得分:0)
创建自己的类,其中包含两个私有词典(一个Dictionary<int,type>
另一个Dictionary<type,int>
)。创建两个方法IntToType
和TypeToInt
,它们将从各自的词典中获取数据。然后添加将添加到两个词典的方法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;
}