gpt4 book ai didi

c# - 枚举字符串属性时出现 TargetParameterCountException

转载 作者:可可西里 更新时间:2023-11-01 03:06:39 31 4
gpt4 key购买 nike

我正在使用以下代码输出属性值:

string output = String.Empty;
string stringy = "stringy";
int inty = 4;
Foo spong = new Foo() {Name = "spong", NumberOfHams = 8};
foreach (PropertyInfo propertyInfo in stringy.GetType().GetProperties())
{
if (propertyInfo.CanRead) output += propertyInfo.GetValue(stringy, null);
}

如果我为 intFoo 复杂类型运行此代码,它工作正常。但是如果我为 string 运行它(如图所示),我会在 foreach 循环内的行中收到以下错误:

System.Reflection.TargetParameterCountException: Parameter count mismatch.

有谁知道这意味着什么以及如何避免它?

万一有人问“你为什么要枚举字符串的属性”,最终我希望创建一个通用类,它将输出传递给它的任何类型的属性(可能是一个字符串......)。

最佳答案

在这种情况下,字符串的属性之一是用于返回指定位置字符的索引器。因此,当您尝试 GetValue 时,该方法需要一个索引但没有收到索引,从而导致异常。

要检查哪些属性需要索引,您可以在 PropertyInfo 对象上调用 GetIndexParameters。它返回一个 ParameterInfo 数组,但您可以只检查该数组的长度(如果没有参数,它将为零)

关于c# - 枚举字符串属性时出现 TargetParameterCountException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156577/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com