2
我們用JSON.NET我們的數據與OnDeserialized
屬性一起序列化反序列化後,執行自定義代碼屬性:OnDeserialized用於protobuf網
[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";
}
}
嗨,馬克!你的例子工作,但我的代碼仍然無法正常工作。我添加了一個示例控制檯應用程序來解釋我的問題。 – user1613797
@user在示例中,您已禁用自動配置(false)。正因爲如此,自動配置沒有發生!如果您正在手動配置模型,包括告訴它要調用哪些回調函數。 MetaType上有一個方法。或者只是傳遞true而不是。 –
謝謝Marc!我已將第二個參數更改爲true,現在可以使用。 – user1613797