I'm getting the
parameter count mismatch
error. It occurs at the if
clause. My code:
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;
}
It's strange because it works just fine when I add the property
value to the dictionary, but not when I'm testing if it's null
in the if
clause.
All the questions I've found were putting an incorrect number of arguments into the function call, but AFAIK there's nothing different between my two calls.
I'm pretty sure this is because your object type has an indexer "property" and you are passing null to the index parameter on the GetValue call.
Either remove the indexed property or filter out the indexed properties from your properties variable, for example:
var properties = obj.GetType().GetProperties()
.Where(p => p.GetIndexParameters().Length == 0);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With