工厂和反射的使用方法
大家好!话不多说看代码!!!
首先我们先创建一个工厂类
/// <summary>
/// 工厂类
/// </summary>
public class Gfactory<T>
{
//获取配置文件节点值
static string assemblyName = ConfigurationManager.AppSettings["DBName"].ToString();
public static T CreateFactory(string typeName)
{
//动态加载程序集(从配置文件中获取)
Assembly ass = Assembly.Load(assemblyName);
//创建类的实例
T t = (T)ass.CreateInstance(assemblyName + "." + typeName);
return t;
}
}
然后是BLL类的调用方法
public class BaseBLL<T> where T : class,new()
{
// IOrder prod = Factory.DataAccess<IOrder>.CreateFactory("OrderDAL");
// 定义成员,负责接收工厂返回的对象
public Interface1<T> obj;
public BaseBLL(string typeName)
{
//调用工厂创建对象
obj = Factory.Gfactory<Interface1<T>>.CreateFactory(typeName);
}
}
///这个是操作的BLL下面的类
public class FeedBLL : BaseBLL<你要操作的Model>
{
/// <summary>
/// 产品业务逻辑层
/// </summary>
static string typeName = "你要使用的DAL名称";
private 接口名称 IFee;
/// <summary>
/// 类的构造函数,通过base访问父类的构造函数,并且传值
/// </summary>
public FeedBLL()
: base(typeName)
{
IFee = (接口名称 )base.obj; // 通过base调用父类的成员
}
}