Gibt es eine Möglichkeit, ein Ereignis zu behandeln oder in ein Objekt zurückzurufen, das gerade von Protobuf deserialisiert wurde, ohne explizit die Methode vom deserialisierten Objekt aufrufen zu müssen?Protobuf .NET Post-Deserialisierungs-Handler
Zum Beispiel sagen, dass ich die folgende Klasse habe:
[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
}
}
Würde eine Art und Weise zu nennen in „ValidateAddresses“ da sein, ohne es explizit aus dem entserialisierten Objekt in dem Codeblock anrufen zu müssen, wo es deserialisiert wurde ? Der Aufruf im Konstruktor ist wertlos, da Protobuf die serialisierten Werte noch nicht angewendet hat. Daher wäre es schön, wenn man wissen könnte, wann die Werte angewendet wurden. Ich hoffe, dass es einen Weg gibt, dies zu erreichen, um den Post-Deserialisierungs-Aufruf überall dort, wo das Objekt verwendet wird, zu reformieren.
Ich habe ein paar Ideen, aber ich dachte, ich würde die Frage posten, bevor ich den Weg des Beweises sie heraus für den Fall jemand hat eine bessere, die ich gerade noch nicht sehen (was sehr wahrscheinlich ist). Danke im Voraus.
Ich liebe einfache Lösungen und das ist viel einfacher als die verrückte Route, die ich ging (statische Deserialisierung Klasse widerspiegelt deserialisierte Objekt und Aufrufmethode usw., nicht schön). Danke Marc, genau das habe ich gebraucht. – Ryan