2015-08-05 14 views
6

Sto ricevendo ilParametro conteggio mancata corrispondenza property.GetValue()

conteggio parametro non corrispondente

errore. Si verifica nella clausola if. Il mio codice:

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; 
} 

E 'strano perché funziona bene quando aggiungo il valore property al dizionario, ma non quando sto testando se è null nella clausola if.

Tutte le domande che ho trovato stavano inserendo un numero errato di argomenti nella chiamata di funzione, ma AFAIK non c'è niente di diverso tra le mie due chiamate.

risposta

12

Sono sicuro che questo è perché il tipo di oggetto ha un indexed property e si passa null al parametro indice sulla chiamata GetValue.

O rimuovere la proprietà indicizzata o filtrare le proprietà indicizzate dai tuoi proprietà variabile, ad esempio:

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