110,536
社区成员
发帖
与我相关
我的任务
分享
public class DBFactory
{
private static string _actName;//帐套名
public DBFactory(string actName)
{
_actName = actName;
}
private static WorkItemCollection<Database> collection = new WorkItemCollection<Database>();
private static object lockHelper = new object();
public static Database Instance
{
get
{
var instance = collection.GetWorkItem(_actName);
if (instance == null)
{
lock (lockHelper)
{
if (instance == null)
{
instance = new GenericDatabase("根据帐套获取到的连接字符串", SqlClientFactory.Instance);
collection.Add(instance);
}
}
}
return instance;
}
}
}
public class WorkItemCollection<T> where T : class
{
protected IList<T> items = new List<T>();
/// <summary>
/// 外部获得T类型的入口
/// </summary>
/// <returns></returns>
public virtual T GetWorkItem(string actName)
{
if (items == null || items.Count == 0) return null;
//可能的话返回一个现成实例
foreach (T item in items)
{
return item;
}
return null;//如果没有现成的实例则返回null
}
/// <summary>
/// 添加一个实例
/// </summary>
/// <param name="item"></param>
public virtual void Add(T item)
{
if (item == null) throw new ArgumentNullException("item is null");
items.Add(item);
}
}