我有两个完全相同的方法,但是一个接受PaintEventArgs
类参数,而另一个接受PrintPageEventArgs
类参数。这迫使我写出两种不同的方法,这些方法对于这种微小的差异往往有点过分。
public static void DoAllTasks_Panel(PaintEventArgs e)
{
// Commands...
}
public static void DoAllTasks_Print(PrintPageEventArgs e)
{
// Commands...
}
我尝试使用EventArgs
类参数将它们合并到单个方法中但没有成功,如下所示:
public static void DoAllTasks(EventArgs e)
{
// Commands...
}
是否有可能将它们合并为一个方法?
答案 0 :(得分:5)
您可以编写第三个private
方法,将您关注的值从这些EventArgs作为参数,然后将这两个方法作为单行调用,只调用第三个方法。
答案 1 :(得分:4)
如果DoAllTasks_Panel
和DoAllTasks_Print
真正做同样的事情,并且只因为需要两个不同的签名而存在,那么标准方法是创建第三个私有方法来完成工作每个人都叫它:
public static void DoAllTasks_Panel(PaintEventArgs e)
{
DoCommands();
}
public static void DoAllTasks_Print(PrintPageEventArgs e)
{
DoCommands();
}
private static DoCommands()
{
// Commands...
}
通过这种方式,您可以很好地分离关注点并满足DRY(不要重复自己)原则:您拥有单独的事件处理程序方法和执行所有常见工作的第三种方法。
答案 2 :(得分:0)
如上所述Actorclavilis - 我们假设您需要访问两个参数共有的图形成员:
创建方法
private void useGraphics (System.Drawing.Graphics g)
{
g.DrawImage(Image.FromFile("C:\\My Folder\\MyFile.bmp"), ev.Graphics.VisibleClipBounds);
}
然后打电话如下:
public static void DoAllTasks_Panel(PaintEventArgs e)
{
useGraphics (e.graphics)
}
public static void DoAllTasks(EventArgs e)
{
useGraphics (e.graphics)
}