我正在重溫我去年寫過的課程跟蹤(髒邏輯)。目前,我有一個超級基礎類來處理所有狀態跟蹤,但每個需要跟蹤的屬性需要遵循標準的get { return _x; } set { _isDirty = true; _x = value; }
工作方式。如何動態實現代理模式?
玩過實體框架並閱讀Proxy Pattern後,我希望有更好的方法來實現我的IsDIrty邏輯,同時能夠使用自動實現的屬性?
說實話,我不知道我在說什麼。有沒有一種方法可以讓我這樣做如下:
public class Customer : ITrackable
{
[TrackState(true)] // My own attribute
public virtual string Name { get;set;}
[TrackState(true)]
public virtual int Age { get;set;}
// From ITrackable
public bool IsDirty { get; protected set; }
}
,然後實現它會使用反射(或另一種神奇的解決方案)調用另一個方法先用TrackState
的屬性設置值之前的動態代理屬性。
很顯然,我可以很容易地通過創建phyiscal代理類做到這一點,使用IOC:
public class CustomerProxy : Customer
{
Customer _customer;
public override string Name
{
get { return _customer.Name; }
set { IsDirty = true; return _customer.Name; }
}
// Other properties
}
但我不喜歡不必爲每個對象做到這一點,否則就沒有從我的現有解決方案的好處。希望有人能夠滿足我的好奇心,或者至少告訴我EF如何實現它。
http://joe.truemesh.com/blog//000181.html – Bozho 2010-09-13 16:44:51
完全不相關:殺手的用戶名,我喜歡它,哈哈。 – TheXenocide 2011-05-31 21:31:59