2015-08-05 40 views
6

BenParametre sayımı eşleşmiyor()

parametre sayısı uyuşmazlığı

hata alıyorum. if maddesinde oluşur. Kodum:

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

Ben sözlüğe property değer katmak zaman gayet güzel çalışıyor çünkü garip, ama if fıkrada null buysa test ediyorum değilken.

Bulduğum tüm sorular, işlev çağrısına yanlış sayıda argüman yerleştiriyordu, ancak AFAIK, iki çağrım arasında farklı bir şey yok.

cevap

12

Bunun nedeni, nesne türünüzün bir indexed property olduğundan ve GetValue çağrısındaki endeks parametresine null ilettiğinizden eminim.

Ya örneğin değişken endeksli özelliğini kaldırın veya özelliklerinden endeksli özelliklerini süzmek:

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