Adding items to List using reflection

前端 未结 3 1805
旧巷少年郎
旧巷少年郎 2020-12-14 10:21

I was trying to add items to IList through reflection, but while calling the \"Add\" method an error was thrown \"object ref. not set\". While debugging I came to know that

3条回答
  •  一向
    一向 (楼主)
    2020-12-14 11:14

    You're trying to find an Add method in Type, not in List - and then you're trying to invoke it on a Type.

    MakeGenericType returns a type, not an instance of that type. If you want to create an instance, Activator.CreateInstance is usually the way to go. Try this:

    Type objTyp = typeof(MyObject); //HardCoded TypeName for demo purpose
    var IListRef = typeof (List<>);
    Type[] IListParam = {objTyp};          
    object Result = Activator.CreateInstance(IListRef.MakeGenericType(IListParam));
    
    MyObject objTemp = new MyObject(); 
    Result.GetType().GetMethod("Add").Invoke(Result, new[] {objTemp });
    

    (I would also suggest that you start following conventions for variable names, but that's a separate matter.)

提交回复
热议问题