using ProjectBase.Util;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectBase.Data.BaseDAL
{
///
/// 对业务类进行构造的工厂类
///
/// 业务对象类型
public class BLLFactory where T : class
{
private static Hashtable objCache = new Hashtable();
private static object syncRoot = new Object();
///
/// 创建或者从缓存中获取对应业务类的实例
///
public static T Instance
{
get
{
string CacheKey = typeof(T).FullName;
T bll = (T)objCache[CacheKey]; //从缓存读取
if (bll == null)
{
lock (syncRoot)
{
if (bll == null)
{
bll = Reflect.Create(typeof(T).FullName, typeof(T).Assembly.GetName().Name); //反射创建,并缓存
objCache.Add(typeof(T).FullName, bll);
}
}
}
return bll;
}
}
}
}