ProtoBuf型铸造问题

时间:2012-03-10 05:07:27

标签: .net protocol-buffers protobuf-net

我使用ProtoBuf来序列化类。不幸的是,Serializer.Deserialize方法给出错误“不期望类型,并且不能推断出合同:System.Object”。任何提示如何解决这个问题。

private void WriteToFile( string siteID, object objectTemp, stringfileSystemPath)
        {
            var type = objectTemp.GetType();
using (var file = File.Create(fileSystemPath))
                {
                    Serializer.NonGeneric.Serialize(file, objectTemp);
                }
        }

private object ReadFromFile( string siteID, object objectTemp, stringfileSystemPath)
        {
            Type type = objectTemp.GetType();   
            object objectTemp2=null;
                using (var file = File.OpenRead(fileSystemPath))
                {
                    objectTemp2 = Serializer.NonGeneric.Deserialize(type, file);
                }
                return objectTemp2;
            }
        }

我正在使用带有.Net 3.5的protobuf.Net v2 beta

1 个答案:

答案 0 :(得分:1)

Serializer.NonGeneric.Deserialize希望提供protobuf生成的类型。 (你给它的类型是System.Object。它不知道如何处理它。)

查看protoc生成的C#代码,并指定您尝试从文件中读取的类的typeof()

或换句话说,如果WriteToFile成功,则使用objectTemp的类型。进入该文件的类型是需要从文件中输出的类型。