键值对集合,其中值可以是多种类型?

时间:2016-12-05 17:42:49

标签: asp.net .net generics serialization collections

Tl; dr我想设置一组键值对,其中值可以是多种类型,但也可以使用ISerializable进行序列化。这是可能的,如果可以的话,我该如何实现呢?

我正在尝试替换现有系统中的代码,其中Hashtables存储在Session变量中,允许开发人员根据指定的密钥存储多种类型的对象。我正在尝试转换系统,以便它可以使用SqlServer SessionState(将Session数据存储在数据库中,而不是存储在内存中),这需要添加到Session对象的所有内容{ {1}}。

希望这可以通过我自己的Generic数据类以某种方式实现,该类包装了集合中多种类型的对象?我只是不太明白(我已经使用了很多Generic集合,从来没有设置我自己的泛型类,所以我很难看到我是怎么做的。)

非常感谢,提出任何有关可行方法的建议。

1 个答案:

答案 0 :(得分:0)

基本上,您需要Dictionary<TKey, TValue>,其中TValue必须实现ISerializable。由于Dictionary具有您需要的所有实现,并且只对TValue类型过于宽松,因此创建继承Dictionary并添加泛型约束的类就足够了:

class DictionaryOfSerializables<TKey, TValue> : Dictionary<TKey, TValue> where TValue : ISerializable
{ }