C#面试题更新 2026-08-05

请解释 .NET 中 Data Annotations 的概念,并说明它在模型验证中的具体应用方式。

编码实现技术原理C#.NET

考察说明

考察对 .NET 数据注解验证机制的理解与应用能力。

回答思路

  1. 【回答框架 1】Data Annotations 是 .NET 中用于声明式配置模型验证规则的一组特性(Attributes),如 Required、StringLength、Range 等。它们将验证逻辑以元数据形式附加到模型属性上,使验证规则与模型定义紧密耦合,便于维护。
  2. 【回答框架 2】在 MVC/Web API 中,模型绑定后会自动执行数据注解验证。当模型状态无效时,可通过模型状态字典获取错误信息。手动验证也可使用 Validator.TryValidateObject 方法触发验证,该方法会检查所有带有验证特性的属性并返回结果。
  3. 【回答框架 3】数据注解还支持自定义验证,通过继承 ValidationAttribute 并重写 IsValid 方法,可以实现特定业务规则的验证。此外,使用 IValidatableObject 接口可以在模型级别实现跨字段验证,确保复杂逻辑的正确性。
  4. 【回答框架 4】验证错误信息默认包含在模型状态的 Errors 集合中,可通过自定义错误消息资源实现本地化。应用时需注意特性中的 ErrorMessage 参数,它支持格式化字符串,并可通过服务注入实现资源文件访问。
  5. 【关键点 1】Data Annotations 通过特性声明验证规则,如 Required、Range、StringLength 等。
  6. 【关键点 2】在 MVC 中模型绑定后自动执行验证,也可手动使用 Validator.TryValidateObject。
  7. 【关键点 3】自定义验证通过继承 ValidationAttribute 或实现 IValidatableObject 实现。
  8. 【关键点 4】验证错误可通过模型状态获取并支持自定义消息与本地化。
  9. 【易错点 1】仅依赖 Data Annotations 可能不足以处理复杂跨字段验证,需要结合 IValidatableObject 或服务层验证。
  10. 【易错点 2】特性中未指定 ErrorMessage 时,默认错误消息可能不适合用户体验,应自定义。
  11. 【易错点 3】过度使用数据注解会导致模型类职责过重,应平衡关注点。