c# - 使用元数据验证部分类
问题描述
我正在尝试验证具有部分类和元数据类的类。当我直接在类中指定属性时,验证有效,而当通过元数据时,则无效。如何验证我的课程?
public class EntityMetadata
{
[Required] // when through metadata it doesn’t work
public string Property { get; set; }
}
[MetadataType(typeof(EntityMetadata))]
public partial class Entity
{
}
public partial class Entity
{
[Required] // when directly it works
public string Property { get; set; }
}
class Program
{
static void Main(string[] args)
{
Entity entity = new Entity();
var context = new ValidationContext(entity, null, null);
var results = new List<ValidationResult>();
Validator.TryValidateObject(entity, context, results, true);
}
}
解决方案
如果您使用 .NETFramework v4.7.x 和 System.ComponentModel.DataAnnotations,您可以在执行后在结果对象中找到验证:
results[0]
代码:
Entity entity = new Entity();
var context = new ValidationContext(entity, null, null);
var results = new List<ValidationResult>();
TypeDescriptor.AddProviderTransparent(
new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Entity), typeof(EntityMetadata)), typeof(Entity));
Validator.TryValidateObject(entity, context, results, true);
推荐阅读
- tomcat - 如何在 Ansible 中使用 until 循环放置 OR 条件
- c# - 继承用户控件设计器
- python - Python - 基于 API 限制的错误网关错误
- javascript - 使用异步等待模式重新调整承诺,并有一些延迟
- python - Matplotlib 一个轴的不同刻度方向
- android - 如何正确清除 Fragments 并避免泄漏?
- tensorflow - 无法从“object_detection”导入名称“model_lib_v2”
- c# - 使用 async/await 时如何加速 IronPdf
- typescript - 为什么 TypeScript 在重新声明变量时不能推断出正确的类型
- rust - rust 中的“const fn”可以连接字节片吗?