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

时间:2014-08-21 15:44:26

标签: c#

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

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'。"

1 个答案:

答案 0 :(得分:1)

我假设您想要获取属性的值并将 转换为一个字节,对吧?不是财产本身......所以:

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

将它作为byte而不是bool似乎很奇怪,不可否认......我已经预料到了:

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

我个人也会使用:

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

而不是明确地拼出System.Boolean