版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
备注:如果按照数据库建立的类的情况下,每个工厂类中有一个用户连接配置的即可。