你的类需要从PetShop.IDAL.ICategory继承Assembly.Load(path).CreateInstance(className); 
这句是通过程序集创建一个实例,然后再转换为PetShop.IDAL.ICategory

解决方案 »

  1.   

            public static PetShop.IDAL.ICategory CreateCategory() { 
                string className = path + ".Category"; 
                return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className); 
            } 是根据path来获得ICategory继承的DAL组件.
    1、这些文件复制到全局程序集缓存中是pet shop在安装的时候就复制了还是编译的过程中复制的? 
       不需要复制吧,如果需要复制肯定是你的path路径设错了.
       
    2、程序发布的时候怎么处理?在安装的时候复制? 
      同上,不需要复制,系统自动的会发布出来。
      

  2.   

    本机映像生成器 (Ngen.exe) 是一个提高托管应用程序性能的工具。Ngen.exe 创建本机映像(包含经编译的特定于处理器的机器代码的文件),并将它们安装到本地计算机上的本机映像缓存中。运行库可从缓存中使用本机映像,而不是使用实时 (JIT) 编译器编译原始程序集。 在 .NET Framework 2.0 版中,Ngen.exe 有了很大变化:安装程序集时还将安装其依赖项,从而简化了 Ngen.exe 的语法。现在可以在应用程序域之间共享本机映像。可利用新增操作 update 重新创建已经失效的映像。操作可由计算机上使用空闲时间生成和安装映像的服务推迟执行。消除了一些导致映像无效的因素。有关如何使用 Ngen.exe 和本机映像服务的其他信息,请参见本机映像服务。注意 
    在本机映像生成器 (Ngen.exe) 的旧有语法中可以找到 .NET Framework 1.0 和 1.1 版的 Ngen.exe 语法。
     
     
    ngen <action> [options]
    ngen /? | /help
      

  3.   

    运行这个命令就能到C:\WINDOWS\assembly文件夹下了。
      

  4.   

    public static PetShop.IDAL.ICategory CreateCategory() { 
                string className = path + ".Category"; 
                return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className); 
            } 
    ====================================================================
    这段这样理解:path是程序集,className是程序集里面的类,这个类实现了PetShop.IDAL.ICategory定义的接口。
    return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className); 
    Assembly.Load(path).CreateInstance(className); 创建className类的实例,这个实例是Object型,因为它实现了ICategory接口。
    所以可以转换成:PetShop.IDAL.ICategory类型。
    ====================================================================后来查了一下,说是pet shop把PetShop.SQLServerDAL这些文件复制到了C:\WINDOWS\assembly文件夹下,也就是成了全局程序集缓存。
    ======================================================
    这个是系统运行机制的问题,完全不用理他。1、这些文件复制到全局程序集缓存中是pet shop在安装的时候就复制了还是编译的过程中复制的? 
    ===============================================
    编译过程中复制的。
    2、程序发布的时候怎么处理?在安装的时候复制? 
    ====================================================
    发布的时候不用管它。
      

  5.   

    这些文件应该没有复制到全局程序集缓存
    提示"未能加载文件或程序集'M.DALDatabase'或它的某一个依赖项。系统找不到指定的文件。" 这个错误,
    应该是你classname的命名写错了吧。