在WebAPI项目中:
public class MyObject
{
[PostSharp.Patterns.Contract.StringLength(8, 63, ErrorMessage = "blala string")]
public string Name { get; set; }
[PostSharp.Patterns.Contract.Range(3,5)]
public int Num { get; set; }
}
public class MyController : ApiController
{
public HttpResponseMessage Post([FromBody]MyObject obj)
{
/// And here there's a problem...
}
}
在Post
方法中,如果发送的名称字段的长度小于8,则obj.Name将为null。
以相同的方式,如果num字段小于3,则obj.Num将为0。
这会产生一个问题,因为当只是默认值而不抛出任何异常时,你会得到一个带有需要再次验证的字段的对象 - 在这种情况下,有点使用PostSharp来消除边缘。
BTW,我查看了IL,我找不到任何反序列化实现。
那么,任何想法为什么会发生这种情况以及可以做些什么?