[英]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.