我想知道是否有人可以指出我正确的方向。
这是导致参数计数不匹配错误的代码。
调用PropertyInfo.GetValue时,参数计数不匹配异常。我无法在我们的环境中实现它。在我们使用此代码的5个客户中,有一个客户生产环境就发生了。
private string getValueFromType(object obj, string type, Type targetClassType, Type currentClassType = null)
{
//Reflection to find value for Jack Henry type mapped to specific OnBase KeywordType
if (obj == null)
{
return String.Empty;
}
var objType = obj.GetType();
if (objType == targetClassType)
{
currentClassType = objType;
}
var properties = objType.GetProperties();
var value = String.Empty;
foreach (var property in properties)
{
var propValue = property.GetValue(obj, null);
var elems = propValue as IList;
if (elems != null)
{
foreach (var item in elems)
{
value = this.getValueFromType(item, type, targetClassType, currentClassType);
if (value != String.Empty)
{
return value;
}
}
}
else
{
if (property.PropertyType.Assembly.FullName.StartsWith("JackHenry"))
{
value = this.getValueFromType(propValue, type, targetClassType, currentClassType);
if (value != String.Empty)
{
return value;
}
}
else
{
if (currentClassType == targetClassType && objType.FullName == type && property.Name == "Value")
{
return propValue.ToString();
}
}
}
}
return value;
}
我已经对其进行了研究,一些帖子说这是因为对象类型具有索引属性,并且您在GetValue调用中将null传递给index参数。因此解决方案是
var properties = objType.GetProperties().Where(p => p.GetIndexParameters().Length == 0);
但是我想理解为什么没有indexedparameters行的现有代码在任何时候都能工作。 有什么想法吗?