如果我像这样以编程方式设置protobuf:
RuntimeTypeModel.Default.Add(typeof(BaseClass), true);
以下回调从未被调用:
class BaseClass
{
[OnSerializing]
public void BeforeSerialization()
{
Debug.WriteLine("BeforeSerialization");
}
}
然而,如果我添加属性";[协议]";至";BaseClass";,则调用回调。我认为通过Protobuf属性指定的所有内容也可以通过编程方式完成。我错过了一些电话或步骤吗?
OnSerializingAttribute
等仅针对它已经认为是数据契约/原型契约的东西进行处理。如果您手动完成所有操作:
RuntimeTypeModel.Default.Add(typeof(BaseClass), false)
.SetCallbacks(
beforeSerialize: nameof(BaseClass.BeforeSerialization),
afterSerialize: null,
beforeDeserialize: null,
afterDeserialize: null);