有没有办法处理一个事件或回调刚刚被Protobuf反序列化的对象,而不必明确地从反序列化对象中调用该方法?
例如,假设我有以下课程:
[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
}
}
Run Code Online (Sandbox Code Playgroud)
是否有办法调用"ValidateAddresses"而不必从反序列化的代码块中的反序列化对象中显式调用它?在构造函数中调用它是没有价值的,因为Protobuf还没有应用序列化的值,所以有一种方法可以知道它何时完成应用值.我希望有一种方法可以实现这一点,以消除在对象被使用的任何地方重构后反序列化调用的需要.
我有一些想法,但我想我会先发布这个问题,然后再向前证明这些问题,以防万一有人有一个我还没有看到的更好的(这很可能).提前致谢.
Mar*_*ell 16
是.Protobuf-net支持标准的序列化回调.通过WCF/DataContractSerializer属性或protobuf-net特定属性.具体来说,您可以使用[OnDeserializedAttribute]或标记方法[ProtoAfterDeserialization],并在反序列化结束时调用它.可以在序列化之前,序列化之后,反序列化之前和反序列化之后调用方法.
WCF需要这些方法的特定签名,但protobuf-net不那么繁琐:它可以使用WCF签名,但也允许无参数方法,或通常参数的任意组合,或protobuf-net自己的序列化上下文.
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |