我有一个适配器模式应用在一个泛型类上,它实质上是在类型之间进行适配:
class A<T> { event EventHandler e; }
class Aadapter<T1, T2> : A<T1> { A<T2> a; Aadapter(A<T2> _a) { a = _a; } }
问题在于A包含一个事件。我希望所有分配给Adapter的事件处理程序都能够传递到A。
如果我可以将a的事件处理程序分配给Adapter的事件处理程序,那就太好了,但这是不可能的?
这里的想法是,A实际上几乎只是A,但我们需要一种适应它们的方法。由于事件的工作方式,我无法有效地做到这一点,除非手动添加两个事件处理程序,并且当它们被调用时,它们会将其“中继”到另一个事件中。虽然这不太美观,但如果我有像下面这样的东西,似乎会更好:
class A<T> { event EventHandler e; }
class Aadapter<T1, T2> : A<T1> { event *e; A<T2> a; Aadapter(A<T2> _a) { a = _a; e = a.e; } }
从某种意义上说,我们有一个指向事件的指针,可以将a2的事件分配给它。
我怀疑是否有任何简单的方法,但也许有人有一些想法来使其工作。
(顺便说一句,我意识到使用虚拟事件是可能的,但如果可能的话,我想避免这种情况)
protected void ChainEvent(object sender, EventArgs eventArgs) { e(sender, eventArgs); } } class Aadapter : A
{
A a;
Aadapter(A _a)
{
a = _a;
a.e += ChainEvent;
}
}
- Neil