如何解决MaxLength 数据注释是否适用于 List<T>?
可以将 [MaxLength()]
属性与字符串和简单数组一起使用:
即:
[MaxLength(500)]
public string ProductName { get; set; }
或
[MaxLength(50)]
public string [] Products { get; set; }
但它可以与列表一起使用吗?
即:
[MaxLength(50)]
public List<string> Types { get; set; }
解决方法
查看源代码,这取决于所使用的 .NET 版本。
-
在 .NET 框架中,它尝试将对象转换为
Array
。因此,如果不是(例如,List<T>
),将引发 InvalidCastException。 (source) -
在 .NET Core 中,名为
TryGetCount()
的 it calls a method 尝试强制转换为ICollection
,如果失败,则使用反射来获取Count
属性。因此,它应该适用于任何实现ICollection
(List<T>
这样做)的对象或任何具有int Count
属性的对象。 (source)
显然,在这两种情况下,它首先检查对象是否为字符串,然后再进行集合。
注意:MinLength
data annotation 也是如此。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。