我有一个包含多个属性的类(如果有任何区别,所有属性都是字符串)。
我还有一个列表,其中包含该类的许多不同实例。
在为我的类创建一些单元测试时,我决定要循环遍历列表中的每个对象,然后循环遍历该对象的每个属性......
我以为这样做会很简单......
foreach (Object obj in theList)
{
foreach (Property theProperties in obj)
{
do some stufff!!;
}
}
但这没有用! :(
我收到这个错误...
“foreach 语句无法对‘Application.Object’类型的变量进行操作,因为‘Application.Object’不包含‘GetEnumerator’的公共定义”
有谁知道一种方法可以做到这一点,而无需大量的 if 和循环,或者不会陷入任何过于复杂的事情?
尝试一下:
foreach (PropertyInfo propertyInfo in obj.GetType().GetProperties())
{
// do stuff here
}
另请注意Type.GetProperties()
有一个重载,它接受一组绑定标志,因此您可以根据不同的标准(例如可访问性级别)过滤掉属性,请参阅 MSDN 了解更多详细信息:Type.GetProperties 方法 (BindingFlags)最后但并非最不重要的一点是不要忘记添加“system.Reflection”程序集引用。
例如解析所有公共属性:
foreach (var propertyInfo in obj.GetType()
.GetProperties(
BindingFlags.Public
| BindingFlags.Instance))
{
// do stuff here
}
请让我知道这是否按预期工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)