Assembly.CerateInstance创建的object为空怎么弄??  谢谢大家
//load assembly
            Assembly assembly = null;
            try
            {
                if (!string.IsNullOrEmpty(ConfigSettings.AssemblyName))
                {
                    assembly = Assembly.Load(ConfigSettings.AssemblyName);
                }
                else
                {
                    assembly = Assembly.GetCallingAssembly();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("装载程序集失败! " + ex.Message);
                Application.Exit();
                return;
            }            //load class
            try
            {
//下面这句话,CreateInstance的时候,创建的总是空的object?? 
                CodeGenerator = assembly.CreateInstance(ConfigSettings.DevToolClassName) as IDevTool;                
                
                if (CodeGenerator == null)
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("装载工具类失败! " + ex.Message);
                Application.Exit();
                return;
            }

解决方案 »

  1.   

    你所在的程序集中没有object这个类型,所以就返回null了。你可以调用FW程序集试试。或者更准确的说一个带有object类型的程序集
      

  2.   

    ConfigSettings.DevToolClassName要包含全路径,不能只是一个类名称,比如 Form1,而应该是xxxx.xxxx.Form1
      

  3.   

    Assembly.Load("AssemblyName").CreateInstance ("ClassName");加载的程序集中是否包含了创建这个对象所属的类
      

  4.   

    就是说你去创建实例的时候程序集里面没有那个类,同时即使有那个类你也需要主要加上完整的路径,也就是dbmh版主说的要把命名空间这些全部加上去。同时你可以用一个你知道的类去测试下创建一个对象,看是否能够创建成功。
      

  5.   


    用了全名了,不行啊。 dll名:DevTool.Service, 类名:DevTool.Service.DevToolCSharp
      

  6.   

    那创建DevToolCSharp实例应该没问题吧