下面是一部分代码:
                        Assembly dll;
                        Type t1;                      
                        MethodInfo method1;
                        Object obj1;
                        object[] obj = new object[2]{args[1], args[2]};
                        
                        dll = Assembly.LoadFile(snText[i - 1]);
                        t1 = dll.GetType(snType[i - 1]);
                        obj1 = dll.CreateInstance(snType[i - 1]);
                        method1 = t1.GetMethod("ExecuteMethod");
                        
                        method1.Invoke(obj1, obj);
其中snText[i - 1]是dll文件的路径,snType[i - 1]是类名,我是通过配置文件来导入的,运行输入值后就出现未将对象引用设置到对象的实例的错误,请问是什么原因呢?谢谢

解决方案 »

  1.   

    snText看定义,没看到定义。单步调试一点点跟,很容易确定问题。
      

  2.   

    method1 = t1.GetMethod("ExecuteMethod");执行这句以后,你要判断下这个methid1是不是为空,因为有时候你的配置文件可能不对,或者需要制定相应的反射flag
      

  3.   


    如果method1 = t1.GetMethod("ExecuteMethod");执行后,ExecuteMethod不存在,那么method1=null,如果等于null你就不应该去调用
      

  4.   

    t1 = dll.GetType(snType[i - 1]);
      obj1 = dll.CreateInstance(snType[i - 1]);
    应该是obj1 = dll.CreateInstance(typeof(snType[i - 1]));
    obj1就没有实例出来
      

  5.   

    那个问个很愚蠢的问题,我调试的时候想看method1的值,为什么即时窗口里说在运行模式中无法计算表达式?