#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"]);
}
}
}