C#继承:根据继承类的类型选择什么存储库

时间:2010-04-24 15:51:24

标签: c# repository-pattern

我一直在制作一个从互联网上下载有关电影的信息的程序。我有一个基类Title,代表所有标题。 MovieSerieEpisode都是从该类继承的。

要将它们保存到数据库,我有2项服务,MovieServiceSerieService。他们反过来调用存储库,但这在这里并不重要。

我有一个方法Save(Title title),我对此并不满意。我检查标题的类型,然后调用正确的服务。我想也许这样写:

ITitleService service = title.GetService();
title.GetSavedBy(service);

所以我在Title上有一个抽象方法返回一个ITitleSaver,它将为实例返回正确的服务。要做到这一点,服务必须实现ITitleSaver

我的问题是我应该如何实施ITitleSaver?如果我接受Title,我必须在调用正确的重载之前将其强制转换为正确的类型。这将导致不得不再次处理铸造。

处理此问题的最佳方法是什么?我想在相应的类中保存逻辑。

1 个答案:

答案 0 :(得分:0)

我不明白GetService的目的。您只调用该方法将其结果传递给GetSavedBy方法?这是我的建议:

  1. 在Title类
  2. 上公开一个抽象Saver属性
  3. 定义具体方法保存在Title类上,其实现为:

    this.GetSavedBy(节电器);

  4. 在每个Concrete类中,要么创建所需的保护程序,要么使用一些依赖注入工具在运行时注入正确的Saver。

  5. 瞧!这可以很好地解决你的问题。