以通用方式添加Handler方法以关联xml中指定的Handler名称

时间:2015-01-22 00:04:14

标签: c# oop generic-programming

我在Tasks.xml中描述了约100个任务。每个任务都有一些字段,如名称,索引和优先级。在程序中,最终每个任务都由类任务表示。我需要添加为每个任务运行处理程序的能力(有15种不同的可能处理程序,有些是常见的)。 我决定在xml中为每个任务添加一个Handler attriblute:

<Task Name="Task1" Handler="TaskHandler_A">

并向Class Task添加一个名为Handler属性值的方法:

public class Task
{
    string name;
    // some more fields

    void TaskHandler_A()
    {
    }

    // some more handlers
    //
    void TaskHandler_P()
    {
    }    
}

我应该在程序中运行以在某个时刻处理此任务(每个处理程序方法大约有10个代码行)。这应该可以解决问题,但是由于代码公开了处理程序的名称,因此它看起来不够通用。是否有更优雅/通用的解决方案满足此要求,这样我就不需要在代码中公开Handler名称了?

1 个答案:

答案 0 :(得分:0)

一种方法是仅使用带有one method语句的switch

void handler(String handler){
  switch (handler){
    case "TaskHandler_A":
    //relevant code for handler TaskHandler_A
    break;
    case "TaskHandler_B":
    //relevant code for handler TaskHandler_B
    break;
    // other cases
  }
}
  

同样为这种情况制作通用方法取决于事件处理代码,如果它们有多少共同代码或者您希望处理代码完成什么