gpt4 book ai didi

c# - 属性查询不转换为属性的基本类型,给出了什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:37 25 4
gpt4 key购买 nike

我正在尝试查询属性并访问多个属性的基本类型。由于某种原因,它无法正确转换并且没有按预期执行。这是下面的代码:

    internal static void ValidateProperties(TModel model, ModelStateDictionary modelState)
{
Type type = model.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
foreach(Attribute attribute in property.GetCustomAttributes(true))
{
ValidationAttribute validationAttribute = attribute as ValidationAttribute;
if (validationAttribute != null)
{
if (!validationAttribute.IsValid(property.GetValue(model, null)))
modelState.AddModelError(property.Name, validationAttribute.ErrorMessage);
}
}
}
}

出于某种原因,validateAttribute 始终为空。在调试时,它不会转换 CustomValidationAttribute 或 RequiredAttribute。尝试直接转换为 ValidationAttribute 而不是使用“as”关键字也会导致这两种类型的 Invalid Cast 异常。显然它们是从 ValidationAttribute 派生的:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.aspx

我错过了什么?谢谢!


编辑:根据请求,我添加了一条调试语句来输出属性的类型。结果如下:

System.ComponentModel.DataAnnotations.CustomValidationAttributeSystem.ComponentModel.DataAnnotations.RequiredAttributeSystem.ComponentModel.DataAnnotations.RegularExpressionAttributeSystem.ComponentModel.DataAnnotations.CustomValidationAttributeSystem.ComponentModel.DataAnnotations.RequiredAttribute

最佳答案

看起来您没有遗漏任何东西或做错任何事情,所以这是一个黑暗的镜头:程序集(一个查询和一个被查询)是否使用不同的(强命名的)版本System.ComponentModel.DataAnnotations.dll?

关于c# - 属性查询不转换为属性的基本类型,给出了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com