2015-03-06 4 views
0

(Прошу простить мою способность эффективно описывать эту ситуацию, я не компьютерный ученый или инженер-программист по профессии. Я всего лишь инженер GNC, который заканчивает делать много кодирования)Ошибка двоичной десериализации C#, модификация класса

Я пытаюсь загрузить файл двоичной сериализации, что приводит к ошибке загрузки. Есть классы (ы), которые больше не существуют в моей программе, которые (я считаю) вызывают эту ошибку. Существует ли общий способ «игнорировать» эту часть десериализации?

Возможно, эта аналогия поможет: у меня есть файл, который описывает, как построить велосипед, автомобиль и самолет. Парень, который знает, как построить все это, ушел, но новый парень знает, как строить велосипеды и автомобили. Я хотел бы передать этот файл новому парню, чтобы построить мне велосипед и машину, вместо этого он бросает в порядок неспособность строить самолеты. Как я могу рассказать этому парню (назовите его мистером Deserialize), чтобы забыть о самолете и просто построить мне свою машину и велосипед.

Спасибо заранее,

(The ObjectManager нашли недопустимое количество fixups. Как правило, это указывает на проблему в Formatter)

+1

Будет ли [ '[NonSerialized]'] (https://msdn.microsoft.com/en-us/library/system.nonserializedattribute%28v=vs.110%29.aspx) атрибут работы игнорировать недостающий класс? Включение любого кода поможет ограничить возможности. – ryanyuyu

ответ

0

Похоже, сценарий, в котором вам нужно реализовать ISerializable, и обеспечить индивидуальное определение для DeserializeItem способ. Пример:

public class GNCEngineer : ISerializable 
{ 
    public Bike Bike { get; set; } 
    public Car Car { get; set; } 
    public Plane AirPlane { get; set; } 

    public static void SerializeItem(string fileName, IFormatter formatter) 
    { 
     // let serializer do their work 
    } 

    public static void DeserializeItem(string fileName, IFormatter formatter) 
    { 
     // Ignore airplane and let rest work. 
    } 
} 
Смежные вопросы