仅包含Serializable对象的字典

Lam*_*lex 6 c# generics serialization dictionary

我正在寻找一种方法来确保只有可序列化的对象存储在C#中的Dictionary中.

更具体地说,我希望做类似的事情:

Dictionary<String, ISerializable> serialDict = new Dictionary<String, ISerializable>();
Run Code Online (Sandbox Code Playgroud)

这个问题是我不能存储整数类型,如整数,布尔值或字符串.

有没有办法确保我的词典只包含可以序列化的对象?

Joe*_*nos 4

我认为你不能在编译时执行此操作,但可以在运行时执行此操作。如果您构建自己的派生类Dictionary<TKey, TValue>,则在类的构造函数中,您可以检查附加到该类型的属性TValue,并确保SerializableAttribute是其中之一,否则抛出异常。

所有标准基元类型(intbool等)都具有此属性。