【发布时间】:2014-02-18 13:23:30
【问题描述】:
我们使用 JSON.NET 将我们的数据与OnDeserialized 属性一起序列化,以在反序列化后执行自定义代码:
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
...
}
现在我们尝试使用protobuf 而不是JSON.NET,但这个方法没有执行。是否有其他方法可以使用protobuf.net 实现此行为?
这是一个不起作用的例子:
class Program
{
static void Main(string[] args)
{
RuntimeTypeModel.Default.Add(typeof (Profile), false).Add(1000, "Id").Add(1001, "Text");
var test = new Profile {Id = Guid.NewGuid(), Text = "123"};
using (var memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, test);
memoryStream.Seek(0, SeekOrigin.Begin);
var deserialized = Serializer.Deserialize<Profile>(memoryStream);
Console.WriteLine(deserialized.Text); // should output "changed"
Console.ReadLine();
}
}
}
[ProtoContract]
public class Profile
{
public Guid Id { get; set; }
public string Text { get; set; }
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
Text = "changed";
}
}
【问题讨论】:
标签: protobuf-net