我正在尝试使用反射来迭代我的类之一中的所有属性:
public MDInstrument() : base()
{
PropertyInfo[] properties = typeof(MDInstrument).GetProperties();
foreach (PropertyInfo item in properties)
{
var tick = item as TickData;
}
}
当我检查 var 属性时,我可以正确地看到所有属性
但在线:
var tick = item as TickData;
我收到错误:
ADDITION
您好,感谢您的反馈。我并不是想获得价值。代码在构造函数中。我正在尝试循环类中的对象,如果它们的类型为“TickData”,那么我想将它们添加到列表中。我通过尝试使用 as 关键字进行转换来做到这一点。我肯定错过了什么。
你需要使用PropertyInfo.GetValue https://msdn.microsoft.com/en-us/library/b05d59ty(v=vs.110).aspx,这将给出该值,然后您可以将其转换为您想要的类型。
private static void GetPropertyValues(Object obj)
{
Type t = obj.GetType();
Console.WriteLine("Type is: {0}", t.Name);
PropertyInfo[] props = t.GetProperties();
Console.WriteLine("Properties (N = {0}):",
props.Length);
foreach (var prop in props)
if (prop.GetIndexParameters().Length == 0)
Console.WriteLine(" {0} ({1}): {2}", prop.Name,
prop.PropertyType.Name,
prop.GetValue(obj));
else
Console.WriteLine(" {0} ({1}): <Indexed>", prop.Name,
prop.PropertyType.Name);
}
对于转换,您可以使用转换.更改类型 https://msdn.microsoft.com/en-us/library/ms130977(v=vs.110).aspx
Convert.ChangeType(number, typeof(int))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)