/// <summary> /// 資料集基類 /// </summary> /// <typeparam name="T"></typeparam> public abstract class BaseTB<T> where T : class { private static string _TextFile = Path.Combine(ConfigurationManager.AppSettings["TextDBDir"], typeof(T).Name + "TB.txt"); private static List<T> _data = null; /// <summary> /// 資料容器 /// </summary> internal static List<T> Container { get { if (_data == null) { if (File.Exists(_TextFile)) { _data = JsonHelper.Deserialize<List<T>>(File.ReadAllText(_TextFile)); } else { _data = new List<T>(); } } return _data; } } /// <summary> /// 擷取記錄 /// </summary> /// <param name="obj"></param> /// <returns></returns> public abstract T Get(T obj); /// <summary> /// 屬性複製 /// </summary> /// <param name="obj1"></param> /// <param name="obj2"></param> public abstract void Copy(T obj1, T obj2); /// <summary> /// 添加記錄 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool Add(T obj) { bool result = false; T item = Get(obj); if (item == null) { Container.Add(obj); Save(); result = true; } return result; } /// <summary> /// 更新記錄 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool Update(T obj) { bool result = false; T item = Get(obj); if (item != null) { Copy(item, obj); Save(); result = true; } return result; } /// <summary> /// 刪除記錄 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool Remove(T obj) { bool result = false; T item = Get(obj); if (item != null) { Container.Remove(item); Save(); result = true; } return result; } /// <summary> /// 儲存資料 /// </summary> internal void Save() { File.WriteAllText(_TextFile, JsonHelper.Serialize(Container)); } } |