我的WebAPI项目上有一个路由,它接受一个对象作为输入ExportPostData
。ExportPostData
有一个类型为Contract
的名为"契约"的属性,当我调用路由时,该属性已成功填充。我将[OnDeserialized]
标记添加到Contract
类中,现在它总是无法反序列化。没有抛出错误,只是Contract
为空。我不知道如何调试这个,因为我的OnDeserialized方法从来没有被击中。
ExportPostData
public class ExportPostData
{
public Contract contract { get; set; }
public bool includeSubItems { get; set; }
public string user { get; set; }
public string[] projects { get; set; }
}
合同public class ZEstimateContract
{
public string _id { get; set; }
public string contractName { get; set; }
public string contractNumber { get; set; }
public string updatedBy { get; set; }
public DateTime updated_at { get; set; }
[OnDeserialized()]
internal void Deserialized()
{
// THIS NEVER GETS HIT
Console.WriteLine("I'm deserialized");
}
}
变化
[OnDeserialized()]
internal void Deserialized()
{
// THIS NEVER GETS HIT
Console.WriteLine("I'm deserialized");
}
:
[OnDeserialized]
internal void Deserialized(StreamingContext context)
{
// THIS GETS HIT NOW
Console.WriteLine("I'm deserialized");
}
如果没有该参数,方法的签名与ondeserialize要查找的签名不匹配。详细信息请参阅本文:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx