一些上下文优先:
我正在编写一个可重复使用的"null tester"方法,该方法将用于检查对象的任何变量是否具有null值或空值。目标是该方法可以采用CCD_ 1并使用反射来检查每个属性的值。
在我向正在检查的类添加List<string>
之前,一切都正常。添加List<string>
时引发TargetParameterCountException,其他基元类型没有。我唯一一次设法重现这个错误是直接传递一个字符串。
我设法把这个问题归结为代码:
string toCheck = "foo";
var elementProperties = toCheck.GetType().GetProperties();
foreach (PropertyInfo property in elementProperties)
{
var elementValue = property.GetValue(toCheck);
//Check if "toCheck" is null or empty here
}
elementProperties
有两个值
Int32 Length
Char Chars[Int32]
我的理解是,第一个表示字符串的长度,第二个表示字符串内容。但是,当代码尝试"GetValue()
"第二个属性时,它会引发一个TargetParameterCountException
。
有人知道它为什么会这么做吗?
因为我试图访问一个char数组,所以我需要指定要检索的char的索引。使用:
property.GetValue(toCheck, new object[] {index})