我在弄清楚如何反序列化二进制文件时遇到了一些麻烦。我几乎无法弄清楚如何使用SerializationInfo.GetValue()的第二个参数; - 如果我只是在那里放置一个类型关键字,它就是无效的,如果我使用TypeCode,它也是无效的。这是我目前的尝试(显然它没有建立)。
protected GroupMgr(SerializationInfo info, StreamingContext context) {
Groups = (Dictionary<int, Group>) info.GetValue("Groups", (Type) TypeCode.Object);
Linker = (Dictionary<int, int>) info.GetValue("Linker", (Type) TypeCode.Object );
}
答案 0 :(得分:3)
SerializationInfo.GetValue中的第二个参数是对象类型:
protected GroupMgr(SerializationInfo info, StreamingContext context) {
Groups = (Dictionary<int, Group>) info.GetValue("Groups", typeof(Dictionary<int, Group>));
Linker = (Dictionary<int, int>) info.GetValue("Linker", typeof(Dictionary<int, int>));
}
答案 1 :(得分:0)
typeof(object)
或
instance.GetType()
其中instance
是object
。当然,请替换您案例中的实际类型。
答案 2 :(得分:0)
实例化临时变量:
Dictionary<int, Group> tmpDict = new Dictionary<int, Group>(); Dictionary<int, int> tmpLinker = new Dictionary<int, int>();
然后在下面的行中:
Groups = (Dictionary<int, Group>) info.GetValue("Groups", tmpDict.GetType()); Linker = (Dictionary<int, int>) info.GetValue("Linker", tmpLinker.GetType());
希望这有帮助, 最好的祝福, 汤姆。