2012-12-24 54 views
1

我需要一個具有擴展搜索機制的泛型列表,因此我創建了一個具有addirional索引器的泛型列表(基數爲List<T>)。所以在這裏,如果T是一個對象,那麼該列表允許基於一個字段獲取該項目。下面是示例代碼PropertyInfo.GetValue(object obj,object [] index)引發'Target'異常

public class cStudent 
    { 
     public Int32 Age { get; set; } 
     public String Name { get; set; } 
    } 

TestList<cStudent> l_objTestList = new TestList<cStudent>(); 
l_objTestList.Add(new cStudent { Age = 25, Name = "Pramodh" }); 
l_objTestList.Add(new cStudent { Age = 28, Name = "Sumodh" }); 
cStudent l_objDetails = l_objTestList["Name", "Pramodh"]; 

而我genereic名單

class TestList<T> : List<T> 
    { 
      public T this[String p_strVariableName, String p_strVariableValue] 
      { 
      get 
       { 
       for (Int32 l_nIndex = 0; l_nIndex < this.Count; l_nIndex++) 
        { 
         PropertyInfo l_objPropertyInfo = (typeof(T)).GetProperty(p_strVariableName); 
         object l_obj = l_objPropertyInfo.GetValue("Name", null); // Wrong Statement -------> 1     
        } 
       return default(T); 
       } 
      } 
    } 

但我不能得到的財產,它的投擲「目標異常」的價值。

請幫我解決這個問題。

回答

2

這行代碼將需要像這樣...

object l_obj = l_objPropertyInfo.GetValue("Name", null); 

=>

object l_obj = l_objPropertyInfo.GetValue(this[l_nIndex], null); 

的第一個參數的getValue函數是要檢索的對象實例物業的價值。

相關問題