Проблема с типом ProtoBuf - PullRequest
1 голос
/ 10 марта 2012

Я использую 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;
            }
        }

Я использую protobuf.Net v2 beta с .Net 3.5

1 Ответ

1 голос
/ 10 марта 2012

Serializer.NonGeneric.Deserialize хочет получить сгенерированный протобуф тип.(вы даете ему тип System.Object. Он не знает, что с этим делать).

Посмотрите на код C #, сгенерированный protoc, и укажите typeof() класса, которым вы являетесьпопытка чтения из файла.

Или, другими словами, если WriteToFile завершается успешно, используйте тип objectTemp.Тип, который вошел в файл, является типом, который должен выйти из файла.

...