TargetParameterCountException 当迭代地从字符串的自反属性中检索值时
TargetParameterCountException when iteratively retrieving value out of reflexive properties of a string
先了解一些上下文:
我正在编写一个可重用的 "null tester" 方法,该方法将用于检查对象的任何变量是否具有 null 或空值。目标是该方法可以采用 Object
并使用反射来检查每个 属性.
的值
一切正常,直到我将 List<string>
添加到正在检查的 class 中。
添加 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
.
有人知道为什么要这样做吗?
因为我试图访问一个字符数组,所以我需要指定要检索的字符的索引。
使用 :
property.GetValue(toCheck, new object[] {index})
先了解一些上下文:
我正在编写一个可重用的 "null tester" 方法,该方法将用于检查对象的任何变量是否具有 null 或空值。目标是该方法可以采用 Object
并使用反射来检查每个 属性.
一切正常,直到我将 List<string>
添加到正在检查的 class 中。
添加 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
.
有人知道为什么要这样做吗?
因为我试图访问一个字符数组,所以我需要指定要检索的字符的索引。 使用 :
property.GetValue(toCheck, new object[] {index})