Значение обнуляется при десериализации с моделью после изменения свойства сокращения в C# - PullRequest
2 голосов
/ 10 апреля 2020

В моем решении сериализовать данные с моделью и сохранить в виде битового массива в SQL, а затем получить битовый массив и затем десериализовать с той же моделью. В модели мы сделали одно изменение. Существующее свойство изменилось на сокращенное, как показано ниже.

Существующий код

    [Serializable()]
    public abstract class SearchResultModel : ISearchResultModel
    {
      private Guid id;
      public Guid ID
      {
        get { return this.id; }
        set { this.id = value; }
      }
    }

И его изменили, как показано ниже

    [Serializable()]
    public abstract class SearchResultModel : ISearchResultModel
    {
      public Guid ID { get; set; }
    }

Данные сериализуются и десериализуются как с новой, так и со старой моделью. Но проблема в том, что когда мы получаем сериализованный битовый массив старой модели, пытающийся десериализоваться с новой моделью, идентификатор становится GUID.Empty.

Код для сериализации и десериализации не изменился.

---------------For Deserialize-----

MemoryStream stream = new MemoryStream(searchResultInfoData);
stream.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
var searchResultInfo = (SearchResultModel)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
return searchResultInfo;
---------------For Serialize-----
 MemoryStream stream = new MemoryStream();
 BinaryFormatter formatter = new BinaryFormatter();
 formatter.Serialize(stream, instance); //instance type is Object
 stream.Seek(0, 0);
 stream.Position = 0; //Return to start
 byte[] byteArray = stream.ToArray();
 stream.Flush();
 stream.Close();
 return byteArray;

С данными обеих моделей уже сохранены. Как мы можем решить это? Я что-то пропустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...