[英]Observer pattern C# using generics
我試圖稍微改變一下觀察者模式,主題和觀察者是同一個類。 例如,
class myclass
{
public delegate void UpdateHandler(object sender);
public event UpdateHandler UpdateEvent;
public Attach(myclass obj){ // use delegate to attach update function of obj}
public Update(object sender){ // do something with sender}
public Notify() { // use UpdateEvent to update all attached obj's }
}
這應該工作正常。 現在,我想消除每次有更新事件時裝箱和拆箱所帶來的性能損失,因此我刪除了基於“對象”的實現,並嘗試使用泛型。 例如,
class myclass<Tin, Tout>
{
public delegate void UpdateHandler(Tout sender);
public event UpdateHandler UpdateEvent;
public Attach(myclass<Tin,Tout> obj)
{ // use delegate to attach update function of obj}
public Update(Tin sender){ // do something with sender}
public Notify()
{ // use UpdateEvent to update all attached obj's
// but now we have to send Tout
}
}
這是行不通的,因為我有一個EventHandler,它可以是Tin或Tout,但不能同時是兩者。 我該如何解決? 也歡迎任何其他更改設計的建議。 非常感謝您閱讀本文,我希望這很清楚可以理解這個問題。
也更改您的事件處理程序:
public delegate void UpdateHandler<Tin>(Tin sender);
public event UpdateHandler<Tin> UpdateEvent;
查看此問題和答案。 這是使用強類型泛型的pub / sub的非常好的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.