property.GetValue()

时间:2015-08-05 14:47:26

标签: c#

我正在

  

参数计数不匹配

错误。它出现在if子句中。我的代码:

private Dictionary<string,string> ObjectToDict(Dictionary<string, string> dict, object obj)
{
    var properties = obj.GetType().GetProperties();
    foreach (var property in properties)
    {
        if (property.GetValue(obj, null) != null)
            dict["{{" + property.Name + "}}"] = property.GetValue(obj, null).ToString();
    }
    return dict;
}

这很奇怪,因为当我将property值添加到字典时,它可以正常工作,但是当我测试它是否null时,它是否正常if条款。

我发现的所有问题都是在函数调用中输入的参数数量不正确,但AFAIK在我的两次调用之间没有什么不同。

1 个答案:

答案 0 :(得分:35)

我很确定这是因为您的对象类型有indexed property,并且您将null传递给 GetValue 调用的index参数。

删除索引属性或从属性变量中筛选出索引属性,例如:

var properties = obj.GetType().GetProperties()
                    .Where(p => p.GetIndexParameters().Length == 0);