![](/img/trans.png)
[英]C# What is the best way to determine the type of an inherited interface class?
[英]C# Inheritence: Choosing what repository based on type of inherited class
我一直在開發一個程序,可以從互聯網下載有關電影的信息。 我有一個基類Title
,它代表所有標題。 Movie
, Serie
和Episode
都從該類繼承。
要將它們保存到數據庫,我有2個服務, MovieService
和SerieService
。 他們依次調用存儲庫,但這在這里並不重要。
我有一個方法Save(Title title)
,我不太滿意。 我檢查標題的類型,然后調用正確的服務。 我想這樣寫:
ITitleService service = title.GetService();
title.GetSavedBy(service);
因此,我在Title
上有一個抽象方法,該方法返回ITitleSaver
,它將為實例返回正確的服務。 為此,服務將必須實施ITitleSaver
我的問題是我應該如何實施ITitleSaver
? 如果我接受Title
,則必須在調用正確的重載之前將其轉換為正確的類型。 這將導致不得不再次處理鑄造。
處理此問題的最佳方法是什么? 我想在相應的類中有保存邏輯。
我不了解GetService的目的。 您僅調用該方法將其結果傳遞給GetSavedBy方法? 這是我的建議:
在Title類上定義一個具體的Save方法,其實現是:
this.GetSavedBy(Saver);
在每個Concrete類中,要么創建所需的保護程序,要么使用某些依賴項注入工具在運行時注入正確的保護程序。
瞧! 這可以很好地解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.