工厂而不是开关

时间:2015-05-20 12:03:22

标签: c# .net

我有以下方法:

Label LabelFactory(string template, object id) {
  Label label = GetLabelTemplate(template);
  if (label == null) throw new Exception("Unknown Label type or Label cannot be loaded.");
  switch (template) {
      case "BTAC":
          label.Data = GetDataForLabel<BTAC>(id); break;
      case "KTAC":
          label.Data = GetDataForLabel<KTAC>(id); break;
      ...
  }
  return label;
}

调用网站不了解类型(BTAC,KTAC等),因此我必须使用此模板参数。但是,我不喜欢这个开关。是否有任何优雅的方式来替代它?

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

优雅在旁观者的眼中;这恰好是在你之后阅读代码的任何人 那说;没有优雅的方式,没有。

你必须回到reflection并找出哪个类对应于发送的字符串变量模板。
也许MEFPrism有帮助。

HTH