可以将[MaxLength()]
属性与字符串和简单数组一起使用:
即 :
[MaxLength(500)]
public string ProductName { get; set; }
或
[MaxLength(50)]
public string [] Products { get; set; }
但是它可以与列表一起使用吗?
即:
[MaxLength(50)]
public List<string> Types { get; set; }
查看源代码,取决于哪个。NET版本。
-
In。NET框架中,它尝试将对象强制转换为
Array
。因此,如果不是(例如List<T>
(,将引发InvalidCastException。(来源( -
在。NET Core,它调用一个名为
TryGetCount()
的方法,该方法尝试强制转换为ICollection
,如果失败,它将使用反射来获取Count
属性。因此,它应该处理任何实现ICollection
的对象(List<T>
就是这样做的(或任何具有int Count
属性的对象。(来源(
显然,在这两种情况下,它都会先检查对象是否是字符串,然后再执行集合。
注意:MinLength
数据注释也是如此