Có cách nào để xử lý một sự kiện hoặc gọi lại vào một đối tượng vừa được deserialized bởi Protobuf mà không cần phải thực sự gọi phương thức từ đối tượng deserialized?Protobuf .NET Post Deserialization Handler
Ví dụ, nói rằng tôi có lớp sau:
[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
}
}
Nên có một cách để gọi vào "ValidateAddresses" mà không cần phải gọi nó một cách rõ ràng từ đối tượng deserialized trong khối mã nơi nó được deserialized ? Gọi nó trong constructor là vô giá trị bởi vì Protobuf đã không áp dụng các giá trị serialized, vì vậy nó sẽ được tốt đẹp để có một cách để biết khi nó đã hoàn thành áp dụng các giá trị. Tôi hy vọng có một cách để thực hiện điều này để loại bỏ sự cần thiết phải cấu trúc lại cuộc gọi deserialization bài ở khắp mọi nơi mà đối tượng đang được sử dụng.
Tôi có một số ý tưởng nhưng tôi nghĩ rằng tôi sẽ đăng câu hỏi trước khi tôi đi xuống đường dẫn chứng minh chúng trong trường hợp ai đó có cái tốt hơn mà tôi chưa thấy (rất có thể). Cảm ơn trước.
Tôi thích các giải pháp đơn giản và đây là cách đi thẳng hơn con đường lập dị mà tôi đã đi (lớp deserialization tĩnh phản ánh đối tượng deserialized và gọi phương thức, v.v., không đẹp). Cảm ơn Marc, đây chính xác là những gì tôi cần. – Ryan