• 命名空间+反射:未能加载文件或程序集“database.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件..


    	public static object CreateObject(string AssemblyPath,string ClassNamespace)
    		{
    			object objType = DataCache.GetCache(ClassNamespace);//从缓存读取
    			if (objType == null)
    			{
    				try
    				{
    					objType = Assembly.Load(AssemblyPath).CreateInstance(ClassNamespace);//反射创建
    					DataCache.SetCache(ClassNamespace, objType);// 写入缓存
    				}
    				catch
    				{}
    			}
    			return objType;
    		}
    
    在反射创建实例的时候。提示  ------------------未能加载文件或程序集“database.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件..

    在项目中。AssemblyPath 加载的位置 是 database.SQLServerDAL。而如果只是简单的创建了类库之后,它默认的命名空间不带有databse.  所以还要再设置项目属性的命名空间为databse.SQLServerDAL.而且。所有在database中的项目。例如 BLL. IDAL.SQLServerDAL.Model 等也必须加上database.

    为什么要写database吗那?

                   

    首先:我们在动软生成三层的时候,定义的命名空间是database;
    那么命名空间和项目中文件夹的关系那?
    我来描述一下。
    database是我们在动软中添加的。我们把这些项目放在database(解决方案里的我们建立的一个文件夹)下。
    而utility文件夹下的DBUtility类的命名空间就是DBUtility并不是 utility.DBUtility.正在这里可以看出。命名空间和文件夹的名称并不是一定有对应关系。
    但: 例如 Web项目下的Default.aspx.cs文件。它的命名空间就是Web.   这里就可以看到。项目生成时,怎么分辨所有的类的引用那?根据其命名空间。所有就把文件夹路径
    引入到命名空间。因为文件夹路径首先是唯一的,其实可以保证我们可以很快的找到它(以文件夹的形式)。
    
    
    那么。在这里。动软既然已经添加其命名空间。只有两种方法:
    1.CS文件中。把namespace 修改。去掉 database
    2.针对项目---属性----命名空间。添加上 database(如果已经引用很多的话。建议使用这种方式)
    ------------------------------------------------------------------------------------------------------------------------------
    命名空间和程序集
    命名空间:
    就像你硬盘里的文件夹, 不同的文件夹下存放不同的文件(类),这样就可以避免文件全部堆在一个地方引起混乱(同理, 这样你就可以为不同的模块建立命名空间,这样就可以使类和容易管理), 并且可以避免多个同名文件无法放在一个文件夹下。
    
    程序集:
    .NET编写的DLL和EXE就是程序集。 程序集包括:
       1、程序集清单,包含程序集元数据。 
       2、类型元数据。 
       3、实现这些类型的 Microsoft 中间语言 (MSIL) 代码。 
       4、资源集。 
    
    所以这两个概念其实是不同的东西,没有什么联系。
    只是一般建立类库项目(DLL)的时候会用默认的命名空间来命名程序集文件,这样很容易使人把这两个东西联系起来。
    ----------------------------------------------------------------------------------------------------------------------------------------
    
    
     <appSettings>
            <!--<add key="DAL" value="database.SQLServerDAL"/> 如果值为database的命名空间,则必须在 SQLServerDAL中命名空间加上 database-->
            <add key="DAL" value="database.SQLServerDAL"/>
            <add key="connStr" value="server=server;database=WaterMananger;uid=sa;pwd=123123"/>
        </appSettings>
    

         

  • 相关阅读:
    叶子的染色
    旅游规划
    加分二叉树
    皇宫看守
    战略游戏
    《C/C++/Java/Pascal 程序设计基础》习题集 解题2
    《C/C++/Java/Pascal 程序设计基础》习题集 解题1
    中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
    中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
    中国大学MOOC-翁恺-C语言程序设计习题集 07-0 到 08-1
  • 原文地址:https://www.cnblogs.com/mahaisong/p/2057826.html
Copyright © 2020-2023  润新知