【问题标题】:Adding Handler methods in a generic way to correlate to Handler names specified in an xml以通用方式添加处理程序方法以关联到 xml 中指定的处理程序名称
【发布时间】:2015-01-22 00:04:13
【问题描述】:

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

<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 行代码)。这应该可以解决需求,但是它似乎不够通用,因为代码公开了处理程序的名称。是否有针对此要求的更优雅/通用的解决方案,这样我就不需要在代码中披露处理程序名称?

【问题讨论】:

    标签: c# oop generic-programming


    【解决方案1】:

    一种方法是仅使用 one methodswitch 语句:

    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
      }
    }
    

    同样为这个场景制作一个通用方法取决于事件处理代码,以防它们有多少公共代码或者你希望处理代码做什么

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2019-11-17
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多