为了账号安全,请及时绑定邮箱和手机立即绑定

C# 中通过反射获取属性值

C# 中通过反射获取属性值

C#
万千封印 2023-08-20 09:53:26
我需要通过反射获取 C# 中的属性值。我需要找到字符串的长度并与 max 进行比较。我写这段代码:public static bool ValidateWithReflection(T model)    {        bool validate = false;        var cls = typeof(T);        PropertyInfo[] propertyInfos = cls.GetProperties();        foreach (PropertyInfo item in propertyInfos)        {            var max = item.GetCustomAttributes<MaxLenghtName>().Select(x => x.Max).FirstOrDefault();            if (max != 0)            {                var lenght = item.GetType().GetProperty(item.Name).GetValue(cls, null);                if ((int)lenght > max)                {                    return validate = true;                }            }        }        return validate;    }这是为了获取财产的价值:var lenght = item.GetType().GetProperty(item.Name).GetValue(cls, null);但它告诉我这个错误:  Message "Object does not match target type."    string现在有什么问题吗?我怎么解决这个问题 ?
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

应该做什么item.GetType().GetProperty(item.Name)?item是一个PropertyInfo实例。您并不是想要获得它的属性,而是想要获得您的model.


因此,将您的代码简化为:


var value = item.GetValue(model) as string;

if (value?.Length > max)

{

    return validate = true;

}


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信