如何反序列化二进制文件

时间:2009-11-24 18:35:44

标签: c# serialization binary

我在弄清楚如何反序列化二进制文件时遇到了一些麻烦。我几乎无法弄清楚如何使用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 );
        }

3 个答案:

答案 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()

其中instanceobject。当然,请替换您案例中的实际类型。

答案 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());

希望这有帮助, 最好的祝福, 汤姆。