已经“用谷歌搜索了 cr*p”,所以如果答案就在这里,或者相当简单,我们深表歉意。
我正在编写单元测试。在这个特定的例子中,我使用无参数构造函数实例化一个对象。使用该构造函数实例化时,不会设置其任何属性。
然后,作为测试的一部分,我想要“循环”属性并断言它们是“null”、“0”或“false”(这将是正确的状态)。
我知道这听起来像是一件愚蠢的事情,但如果我能做到这一点,那么我就可以为其他一切编写更高效、更易读的测试。
我知道我可以“循环”“类型”的属性,但这不是“类型”的实例化对象。它是一个“类型”对象。
在我看来,它应该是(但显然不是)以下内容:
var target = new MyObject();
foreach(var property in target.GetProperties())
{
Assert.IsNull(property);
}
有人吗?
最佳答案
循环遍历该类型的属性,然后针对该类型的实例查找每个属性的值:
var target = new MyObject();
foreach(var property in target.GetType().GetProperties())
{
Type propertyType = property.PropertyType;
object actual = property.GetValue(target, null);
object expected = propertyType.IsValueType
? Activator.CreateInstance(propertyType)
: null;
Assert.AreEqual(expected, actual);
}
关于c# - 如何在 .NET 中循环并测试已实例化对象的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226850/