无法将类型为“System.Reflection.RuntimePropertyInfo”的对象强制转换为类型“Syst

本文关键字:类型 对象 Syst 转换 Reflection System RuntimePropertyInfo | 更新日期: 2023-09-27 18:19:03

我在使用以下代码时遇到问题。我正在遍历一个集合,以查看对象是否具有某种属性类型,如果是,请对其进行一些转换。

var props = obj.GetType().GetProperties();
foreach (var p in props)
{     
    if (p.PropertyType == typeof(System.Boolean))
    {
    var conv = Convert.ToByte(p);
    }
}

当我尝试运行它时,我收到以下错误:

"无法将类型为'System.Reflection.RuntimePropertyInfo'的对象强制转换为类型'System.IConvertible'。

无法将类型为“System.Reflection.RuntimePropertyInfo”的对象强制转换为类型“Syst

我假设您想获取属性的值并将其转换为字节,对吗?不是物业本身...所以:

var conv = Convert.ToByte(p.GetValue(obj, null));
把它

当作byte而不是bool似乎很奇怪,诚然......我本以为:

var conv = (bool) p.GetValue(obj, null);

我个人也会使用:

if (p.PropertyType == typeof(bool))

而不是明确地说明System.Boolean