2015-08-05 17 views
6

Tôi nhận đượcParameter đếm không phù hợp trong property.GetValue()

đếm thông số không phù hợp

lỗi. Nó xảy ra tại mệnh đề if. Mã của tôi:

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

Thật kỳ lạ bởi vì nó chỉ hoạt động tốt khi tôi thêm giá trị property vào từ điển, nhưng không khi tôi đang thử nghiệm nếu nó null trong mệnh đề if.

Tất cả các câu hỏi tôi đã tìm thấy đã đưa số lượng đối số sai vào cuộc gọi hàm, nhưng AFAIK không có gì khác biệt giữa hai cuộc gọi của tôi.

Trả lời

12

Tôi khá chắc chắn điều này là do loại đối tượng của bạn có số indexed property và bạn đang chuyển giá trị rỗng vào tham số chỉ mục trên cuộc gọi GetValue.

Loại bỏ chỉ mục thuộc tính hoặc lọc ra các thuộc tính được lập chỉ mục từ tài sản của bạn biến, ví dụ:

var properties = obj.GetType().GetProperties() 
        .Where(p => p.GetIndexParameters().Length == 0); 
Các vấn đề liên quan