using System; using System.Diagnostics; using System.Reflection; using KGIS.Plugin.LayerProperty.Interface; using KGIS.Plugin.LayerProperty.Model; namespace KGIS.Plugin.LayerProperty.Utils.Storage { public class RDBHelperStorage : AbstractStorage { private static RDBHelperStorage rdbHelperStorage; private static IRDBFactory rdbfactory; private AbstractStorage.Collections _collection { get { return base.Collection; } } public new static AbstractStorage.Collections Collection { get { return RDBHelperStorage.rdbHelperStorage._collection; } } public static ICoreRDBHelper SystemRDBHelper { get { return RDBHelperStorage.rdbHelperStorage._collection["SystemRuntime"]; } } public static IRDBFactory RDBFactory { get { return RDBHelperStorage.rdbfactory; } set { MethodBase method = new StackTrace().GetFrame(1).GetMethod(); string @namespace = method.DeclaringType.Namespace; if (!@namespace.Equals("KGIS.DataAccess")) { throw new Exception("此方法只应用于数据访问工厂才可用"); } RDBHelperStorage.rdbfactory = value; } } static RDBHelperStorage() { RDBHelperStorage.rdbHelperStorage = new RDBHelperStorage(); } private bool _add(ItemInfo item) { return base.Add(item); } private bool _remove(ItemInfo item) { return base.Remove(item); } private void _clear() { base.Clear(); } public new static bool Add(ItemInfo item) { MethodBase method = new StackTrace().GetFrame(1).GetMethod(); string @namespace = method.DeclaringType.Namespace; if (!@namespace.Equals("KGIS.DataAccess")) { throw new Exception("此方法只应用于数据访问工厂才可用"); } return RDBHelperStorage.rdbHelperStorage._add(item); } public new static bool Remove(ItemInfo item) { MethodBase method = new StackTrace().GetFrame(1).GetMethod(); string @namespace = method.DeclaringType.Namespace; if (!@namespace.Equals("KGIS.DataAccess")) { throw new Exception("此方法只应用于数据访问工厂才可用"); } return RDBHelperStorage.rdbHelperStorage._remove(item); } public new static void Clear() { MethodBase method = new StackTrace().GetFrame(1).GetMethod(); string @namespace = method.DeclaringType.Namespace; if (!@namespace.Equals("KGIS.DataAccess")) { throw new Exception("此方法只应用于数据访问工厂才可用"); } RDBHelperStorage.rdbHelperStorage._clear(); } } }