ana*_*ciu 4 c# list maxlength data-annotations
可以将[MaxLength()]属性与字符串和简单数组一起使用:
即:
[MaxLength(500)]
public string ProductName { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者
[MaxLength(50)]
public string [] Products { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是它可以与列表一起使用吗?
即:
[MaxLength(50)]
public List<string> Types { get; set; }
Run Code Online (Sandbox Code Playgroud)
查看源代码,这取决于所使用的 .NET 版本。
在 .NET 框架中,它尝试将对象转换为Array. 因此,如果不是(例如,List<T>),将引发 InvalidCastException。(来源)
在 .NET Core 中,它调用一个名为的方法,该方法TryGetCount()尝试强制转换为 as ICollection,如果失败,则使用反射来获取Count属性。因此,它应该适用于任何实现ICollection(这样List<T>做)的对象或任何具有int Count属性的对象。(来源)
显然,在这两种情况下,它首先检查对象是否是一个字符串,然后再进行集合。
注意:这同样适用于MinLength数据注解。