簡體   English   中英

C#繼承:根據繼承的類的類型選擇哪個存儲庫

[英]C# Inheritence: Choosing what repository based on type of inherited class

我一直在開發一個程序,可以從互聯網下載有關電影的信息。 我有一個基類Title ,它代表所有標題。 MovieSerieEpisode都從該類繼承。

要將它們保存到數據庫,我有2個服務, MovieServiceSerieService 他們依次調用存儲庫,但這在這里並不重要。

我有一個方法Save(Title title) ,我不太滿意。 我檢查標題的類型,然后調用正確的服務。 我想這樣寫:

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

因此,我在Title上有一個抽象方法,該方法返回ITitleSaver ,它將為實例返回正確的服務。 為此,服務將必須實施ITitleSaver

我的問題是我應該如何實施ITitleSaver 如果我接受Title ,則必須在調用正確的重載之前將其轉換為正確的類型。 這將導致不得不再次處理鑄造。

處理此問題的最佳方法是什么? 我想在相應的類中有保存邏輯。

我不了解GetService的目的。 您僅調用該方法將其結果傳遞給GetSavedBy方法? 這是我的建議:

  1. 在Title類上公開一個抽象的Saver屬性
  2. 在Title類上定義一個具體的Save方法,其實現是:

    this.GetSavedBy(Saver);

  3. 在每個Concrete類中,要么創建所需的保護程序,要么使用某些依賴項注入工具在運行時注入正確的保護程序。

瞧! 這可以很好地解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM