private IAop GetFromConfig() { IAop aop = null; string aopApp = AppConfig.Aop; if (!string.IsNullOrEmpty(aopApp)) { string key = "OuterAop_Instance"; if (_Cache.Contains(key)) { aop = _Cache.Get(key) as IAop; } else { #region AOP加载 string[] aopItem = aopApp.Split(','); if (aopItem.Length == 2)//完整类名,程序集(dll)名称 { if (!_IsLoadCompleted) { try { lock (lockObj) { if (_IsLoadCompleted) { return(GetFromConfig());//重新去缓存里拿。 } _IsLoadCompleted = true; System.Reflection.Assembly ass = System.Reflection.Assembly.Load(aopItem[1]); if (ass != null) { object instance = ass.CreateInstance(aopItem[0]); if (instance != null) { _Cache.Set(key, instance, 1440, AppConst.AssemblyPath + aopItem[1].Replace(".dll", "") + ".dll"); aop = instance as IAop; aop.OnLoad(); } } } } catch (Exception err) { string errMsg = err.Message + "--Web.config need add a config item,for example:<add key=\"Aop\" value=\"Web.Aop.AopAction,Aop\" />(value format : ClassFullName,AssemblyName) "; Error.Throw(errMsg); } } } #endregion } } if (aop != null) { IAop cloneAop = aop.Clone(); return(cloneAop == null ? aop : cloneAop); } return(null); }
private IAop GetFromConfig() { IAop aop = null; string aopApp = AppConfig.Aop; if (!string.IsNullOrEmpty(aopApp)) { if (_Cache.Contains("Aop_Instance")) { aop = _Cache.Get("Aop_Instance") as IAop; } else { #region AOP加载 string[] aopItem = aopApp.Split(','); if (aopItem.Length == 2)//完整类名,程序集(dll)名称 { try { System.Reflection.Assembly ass = System.Reflection.Assembly.Load(aopItem[1]); if (ass != null) { object instance = ass.CreateInstance(aopItem[0]); if (instance != null) { _Cache.Add("Aop_Instance", instance, AppConst.RunFolderPath + aopItem[1].Replace(".dll", "") + ".dll", 1440); aop = instance as IAop; if (!_CallOnLoad) { lock (lockObj) { if (!_CallOnLoad) { _CallOnLoad = true; aop.OnLoad(); } } } return(aop); } } } catch (Exception err) { string errMsg = err.Message + "--Web.config need add a config item,for example:<add key=\"Aop\" value=\"Web.Aop.AopAction,Aop\" />(value format:namespace.Classname,Assembly name) "; Error.Throw(errMsg); } } #endregion } } if (aop != null) { return(aop.Clone()); } return(null); }