1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using CB.Config;
- using CB.Entity;
- using CB.Interface;
- namespace CB.Data
- {
- public class DatabaseProvider
- {
- private DatabaseProvider() { }
- static DatabaseProvider() { }
- private static Hashtable cacheList = Hashtable.Synchronized(new Hashtable());
- private static object lockObject = new object();
- private static object LoadDbProvider(string typeName, string interfaceId)
- {
- try
- {
- object provider = Activator.CreateInstance(Type.GetType(typeName, false, true), new object[] { interfaceId });
- cacheList.Add(typeName, provider);
- return provider;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- public static T GetDbProvider<T>()
- {
- string interfaceId = typeof(T).Name;
- string keyName = interfaceId;
- var Config = DataProviderConfig.GetConfig(keyName);
- if (null == Config)
- throw new Exception("没有配置接口[" + keyName + "]的实现类!");
- keyName = Config.TypeName;
- object provider = cacheList[keyName];
- if (null == provider)
- {
- lock (lockObject)
- {
- provider = cacheList[keyName];
- if (null == provider)
- {
- provider = LoadDbProvider(keyName, interfaceId);
- }
- }
- }
- return (T)provider;
- }
- public static void ResetDbProvider()
- {
- cacheList.Clear();
- }
- }
- }
|