【问题标题】:Does MaxLength data annotation work with List<T>?MaxLength 数据注释是否适用于 List<T>?
【发布时间】:2021-05-07 10:55:09
【问题描述】:

可以将[MaxLength()] 属性与字符串和简单数组一起使用:

[MaxLength(500)]
public string ProductName { get; set; }

或者

[MaxLength(50)]
public string [] Products { get; set; }

但它可以与 List 一起使用吗?

[MaxLength(50)]
public List<string> Types { get; set; }

【问题讨论】:

    标签: c# list data-annotations maxlength


    【解决方案1】:

    看源码,看用的是哪个.NET版本。

    • 在 .NET 框架中,它尝试将对象转换为 Array。因此,如果不是(例如,List&lt;T&gt;),则会引发 InvalidCastException。 (source)

    • 在 .NET Core 中,it calls a method 命名为 TryGetCount(),它尝试转换为 ICollection,如果失败,它使用反射来获取 Count 属性。因此,它应该适用于实现ICollectionList&lt;T&gt; 实现)的任何对象或具有int Count 属性的任何对象。 (source)

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

    注意:MinLength data annotation 也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多