C# Как контролировать процесс сериализации пользовательских классов?

Кто-нибудь знает, как я могу контролировать процесс десериализации пользовательского класса, когда он был сериализован с помощью двоичного форматирования?

У меня есть сериализуемый класс Dat, который содержит 2 поля:

class Dat
{
    uint A;
    [field: NonSerialized]
    object Data;
    string File;
}

Что я хочу сделать, так это когда класс десериализован, у меня нет данных объекта, и я просто хочу загрузить его после его десериализации следующим образом (в классе Dat):

void AfterDeserialize()
{
    Data = File.ReadAllBytes(File);
}

Конечно, я мог бы просто десериализовать класс и затем загрузить его, но это почти невозможно, потому что он находится в сложной древовидной структуре. Так кто-нибудь знает, как получить событие или метод с вызовом после десериализации?


person Community    schedule 16.10.2018    source источник
comment
Используйте обратный вызов десериализации (посмотрите ответы на аналогичную проблему здесь: stackoverflow.com/questions/3500429/) или атрибут [OnDeserializing]. Также посмотрите здесь обсуждение различий между интерфейсом обратного вызова десериализации и атрибутами: ideserializationcallbackondeserialization-method-after-the-ondeserialized-event?forum=netfxremoting" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums/en-US/ Надеюсь, это поможет...   -  person    schedule 16.10.2018
comment
Вот оно! :) Ty docs.microsoft.com/en-us/dotnet/api/ Напишите ответ, я могу его принять;)   -  person    schedule 16.10.2018
comment
Возможный дубликат IDeserializationCallback vs OnDeserializedAttribute   -  person    schedule 16.10.2018