首先我是模仿别人写的,我个人理解这段代码主要是通过Assembly类中的方法调用配置文件里的数据库驱动类,应该是一个数据库访问层的工厂类吧。但是出现了些细节问题不懂。具体如下:
(DataProvider)Assembly.Load(assemblyName).CreateInstance(constructor,false);
其中DataProvider是一个类,assembleyName是从配置文件调用的一个程序集名,这里的constructor是assembleyName中的一个类。
1、我不清楚constructor是具体有什么用?
2、上面这句话具体来说有什么实际意义,是创建了一个对象吗?
3、为什么我在通过这样创建的对象调用方法时,总是说未将对象引用设置到对象的实例?由于水平有限,我研究了半天还是不知道错在哪?希望大家赐教

解决方案 »

  1.   

    Assembly.Load(AssemblyName)  方法 是用来加载程序集的,并非实例化一个对象
      

  2.   

    Sorry~ 刚才没看清楚, CreateInstance()就是获得一个实例了通过此方法获得实例,如果出现“未将对象引用设置到对象的实例”,那说明Load方法成功了,而CreateInstance没有成功,很可能是类型名constructor不正确
      

  3.   

    这是加载程序集的,但是后面的CreateInstance()是创建实例啊,不是吗?
    还有就是要加载的程序集是否可以和当前代码所在的程序集是同一个呢?
      

  4.   

    哦!Eddie005(♂) №.零零伍 (♂) 你能否给我解释一下constructor这个参数有什么意思?是调用他的构造函数吗?
      

  5.   

    举例:
    TreeView tv= (TreeView)System.Reflection.Assembly.Load("Microsoft.Web.UI.WebControls").CreateInstance("Microsoft.Web.UI.WebControls.TreeView",false);

    TreeNode node = new TreeNode();
    node.Text = DateTime.Now.ToString();
    tv.Nodes.Add(node);========================================================
    上面的代码能够成功执行,如果改为(类型名称没有写全):
    TreeView tv= (TreeView)System.Reflection.Assembly.Load("Microsoft.Web.UI.WebControls").CreateInstance("TreeView",false);
    则会重现楼主所描述的错误~
      

  6.   

    我能不能和你在QQ或者MSN中交流,我想如果不是这里出错,可能是在继承抽象类时有错,感觉问题很复杂。自己水平不行发先不了错误。
      

  7.   

    上班中,局域网屏蔽了QQ或MSN~   可以访问的就只有CSDN、MSDN为数不多的几个网站~