机房重构(C#)--未处理TypeLoadException(factory层问题)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aimin_com/article/details/81433106

问题图片:

这里写图片描述

这里写图片描述

问题来源:

  • factory层出现问题,主要原因是因为代码不理解,写错了位置。
  • 如果在其他层调用外官方方法没有书写完整一样出错,比如在U层调用工厂层时候,括号里面user没有手写: flag=AddPwd.AddUser(user );//调用外观方法,返回user(重叠注册facade),则一样报错。
  • 将D层的两个配置放到U层,因为U层没有,剪切过去。(自行copy)

factory的以下三种写法:原理相同

    //接受来自配置文件的数据
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];  //用于连接配置文件并调取      
        public IDAL.IUser CreateUser()  
        {
            string ClassName = StrDB + "."  + "SqlServerUser";  //DAL层的类名,最后面的是D层的全名
            return (IDAL.IUser)Assembly.Load(StrDB).CreateInstance(ClassName);//反射加工厂的引用  
        }
  private static readonly string AssemblyName = "DAL";
  private static readonly string db = ConfigurationManager.AppSettings["DB"];

        public IDAL.IUser AddUser()
        {
            string ClassName = AssemblyName + "." + db + "User";

            IDAL.IUser idal = (IDAL.IUser)Assembly.Load(AssemblyName).CreateInstance(ClassName);
            return idal;
        }
    string strDB =  System.Configuration.ConfigurationManager.AppSettings["DB"];//存取配置文件中的配置参数
   public IDAL.LoginIDAL CreateUser()
        //public Function CreateIUser()as IDAL.LoginIDAL
        {
            string className = strDB + "." + "LoginDAL";
            //反射,可以灵活更换要实例化对象className
            IDAL.LoginIDAL idal = (IDAL.LoginIDAL)Assembly.Load(strDB).CreateInstance(className);
            return idal;

备注:如果按照数据库建立的类的情况下,每个工厂类中有一个用户连接配置的即可。

猜你喜欢

转载自blog.csdn.net/aimin_com/article/details/81433106
今日推荐