最大长度数据注释是否适用于列表<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版本。

  • In。NET框架中,它尝试将对象强制转换为Array。因此,如果不是(例如List<T>(,将引发InvalidCastException。(来源(

  • 在。NET Core,它调用一个名为TryGetCount()的方法,该方法尝试强制转换为ICollection,如果失败,它将使用反射来获取Count属性。因此,它应该处理任何实现ICollection的对象(List<T>就是这样做的(或任何具有int Count属性的对象。(来源(

显然,在这两种情况下,它都会先检查对象是否是字符串,然后再执行集合。

注意:MinLength数据注释也是如此

最新更新