PropertyInfo.GetValue(object obj,object [] index)抛出'Target'异常

时间:2012-12-24 05:25:43

标签: c# generics propertyinfo

我需要一个带有扩展搜索机制的通用列表,所以我创建了一个带有附加索引器的通用列表(base List<T>)。所以在这里,如果T是一个对象,那么列表允许根据字段获取项目。这是示例代码

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"];

我的基本名单

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

但是我无法获得该属性的价值,它抛出了“目标异常”。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

这行代码必须是这样的......

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

=&GT;

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

GetValue函数的第一个参数是要从中检索属性值的对象实例。