Есть ли способ обработать событие или перезвонить в объект, который только что был десериализирован Protobuf, без необходимости явно вызывать метод из десериализованного объекта?Protobuf .NET Post Deserialization Handler
Например, у меня есть следующий класс:
[ProtoContract]
public class Customer
{
[ProtoMember(1)]
public string FirstName { get; set; }
[ProtoMember(2)]
public string MiddleName { get; set; }
[ProtoMember(3)]
public string LastName { get; set; }
[ProtoMember(4)]
public Dictionary<int, string> Addresses { get; set; }
public Customer()
{
//Subscibe to a Protobuf deserialization complete event?
}
public void ValidateAddresses()
{
//Some routine to validate addresses
}
}
Будет ли способ вызова в «ValidateAddresses» без необходимости вызывать его явно из десериализованного объекта в блоке коды, в котором он был десериализованным ? Вызов его в конструкторе бесполезен, поскольку Protobuf еще не применял сериализованные значения, поэтому было бы неплохо узнать, когда он закончил применять значения. Я надеюсь, что есть способ сделать это, чтобы устранить необходимость рефакторирования вызова десериализации сообщений везде, где используется объект.
У меня есть некоторые идеи, но я решил, что поставил бы вопрос, прежде чем идти по пути проверки их на случай, если у кого-то есть лучшее, что я пока не вижу (что очень вероятно). Заранее спасибо.
Я люблю простые решения, и это ПУТЬ более прямолинейно, чем пугающий маршрут, который я отправил (статический класс десериализации, отражающий десериализованный объект, метод вызова и т. Д., Не очень). Спасибо, Марк, это именно то, что мне нужно. – Ryan