C# 无法强制转换类型为';System.Reflection.RuntimePropertyInfo';输入';System.IConvertible';
我对以下代码有问题。我正在遍历一个集合,以查看对象是否具有特定的属性类型,如果是,则对其进行一些转换C# 无法强制转换类型为';System.Reflection.RuntimePropertyInfo';输入';System.IConvertible';,c#,C#,我对以下代码有问题。我正在遍历一个集合,以查看对象是否具有特定的属性类型,如果是,则对其进行一些转换 var props = obj.GetType().GetProperties(); foreach (var p in props) { if (p.PropertyType == typeof(System.Boolean)) { var conv = Convert.ToByte(p); } } 当我尝试运行它时,出现以下错误: “无法将'Sys
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'类型。”我假设您希望获取属性值并将其转换为字节,对吗?不是财产本身。。。因此:
var conv = Convert.ToByte(p.GetValue(obj, null));
诚然,将其作为字节而不是布尔值似乎有些奇怪。。。我本以为:
var conv = (bool) p.GetValue(obj, null);
我个人也会使用:
if (p.PropertyType == typeof(bool))
而不是明确地拼写出System.Boolean