我有两个完全相同的方法,但是一个接受一个PaintEventArgs类参数,而另一个接受一个PrintPageEventArgs类参数.这迫使我写出两种不同的方法,这些方法对于这种微小的差异往往有点过分.
public static void DoAllTasks_Panel(PaintEventArgs e)
{
// Commands...
}
public static void DoAllTasks_Print(PrintPageEventArgs e)
{
// Commands...
}
Run Code Online (Sandbox Code Playgroud)
我试图使用EventArgs类参数将它们合并到单个方法中但没有成功,如下所示:
public static void DoAllTasks(EventArgs e)
{
// Commands...
}
Run Code Online (Sandbox Code Playgroud)
是否有可能将它们合并为一个方法?
如果DoAllTasks_Panel并且DoAllTasks_Print真的做同样的事情,并且只是因为需要两个不同的签名而存在,那么标准方法是创建第三个私有方法来完成工作并让每个方法调用它:
public static void DoAllTasks_Panel(PaintEventArgs e)
{
DoCommands();
}
public static void DoAllTasks_Print(PrintPageEventArgs e)
{
DoCommands();
}
private static DoCommands()
{
// Commands...
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以很好地分离关注点并满足 DRY(不要重复自己)原则:您拥有单独的事件处理程序方法和执行所有常见工作的第三种方法。
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |