#region using System.Collections.Generic; using System.Data; using System.Windows.Forms; using CSFrameworkV5.Core; #endregion namespace CSFrameworkV5.Business { /// /// 数据字典的观察者清单 /// public class DataDictObservers { private static List _Observers = new List(); /// /// 增加观察者到队列 /// /// 观察者 public static void Add(IObserver observer) { _Observers.Add(observer); } /// /// 通知观察者 /// /// 观察者名称 public static void Notify(string observerName) { foreach (var o in _Observers) if (o.Name == observerName) o.Notify(); } } /// /// 字典缓存数据的观察者基类。 /// public class DataDictBaseObserver : IObserver { protected string _Name = ""; protected object _ObservedData; public DataDictBaseObserver(string observerName, object observedData) { _Name = observerName; _ObservedData = observedData; } public string Name => _Name; public virtual void Notify() { } } /// /// 观察者模式使用例子 /// public class ObserverSizeCombo : DataDictBaseObserver { private ComboBox.ObjectCollection _combo; public ObserverSizeCombo(string observerName, ComboBox.ObjectCollection combo, DataTable cachedData) : base(observerName, cachedData) { _combo = combo; DataDictObservers.Add(this); } public override void Notify() { var dt = _ObservedData as DataTable; _combo.Clear(); foreach (DataRow row in dt.Rows) _combo.Add(row["SizeID"]); } } }