我有两个非常相似的类,它们基本上做相同的事情。唯一的区别在于提供给每个类的回调处理程序。回调处理程序是不同的,并且接受不同的参数。我想将这些类中的大部分代码概括为一个基类。有没有关于如何智能地概括委托代码的想法?我使用的是.NET 2.0。
注意:我阅读了这篇非常有用的博客this,其中介绍了关于委托的继承以及协变和逆变的文章,但我仍然不知道如何将这些知识应用到这里。
注意:我阅读了这篇非常有用的博客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()
}