我有两个非常相似的类,它们基本上都是一样的。唯一的区别在于提供给每个类的实例的回调处理程序。回调处理程序是不同的,它们被接受不同的参数。我想将这些类中的大部分代码概括为一个基类。关于如何智能地概括委托代码的任何想法?我在.NET 2.0推广委托代码(C#)
注:我读与代表和协方差和逆变与代表文章继承this非常有用的博客,但我仍然不明白如何,知识可以应用在这里。
public class A
{
public delegate void AHandler(string param1, string param2);
public void AcceptHandler(string param3, AHandler handler);
public void InvokeHandler(string forParam1, string forParam2);
// the rest is same
}
public class B
{
public delegate void BHandler(int param1);
public void AcceptHandler(int param2, int param3, int param4, BHandler handler);
public void InvokeHandler(int forParam1);
// the rest is same
}
编辑:代码的“休息”是完全一样的,只是调用具有不同签名的委托方法。事情是这样的:
public void StartListening()
{
Timer timer = new Timer(CheckForChanges, null, 0, 1000);
}
private void CheckForChanges()
{
// pull changes, and pass different params to InvokeHandler()
}
在.NET 4.0之前,协变和反方差是非常有限的。这就是当泛型类型的协变和反变化的主要支持来到生活时 – 2011-05-13 17:50:32
您可以添加一些关于委托和处理程序如何由最常见的代码调用的细节吗?我正在考虑某种由基础定义和调用的抽象OnRaise()事件,但在A和B中被重写和推送,以便与委托和处理程序做'正确的事情',但我不知道如果不知道更多 – n8wrl 2011-05-13 17:57:04