簡體   English   中英

如何切換具有相同名稱和不同名稱空間的類?

[英]How to switch classes with same name and different namespaces?

我已經閱讀了博客文章Repository Design Pattern

本文的主要思想是強制轉換具有相同名稱的類以獲得更多功能。 沒關系,我了解。 但是我聽不懂這段代碼:

repository.query(new NewestNewsesSpecification());

NewestNewsesSpecification適用於SQL和NewestNewsesSpecification的境界。

所以我的問題是-如果類具有相同的名稱但在不同的命名空間中,那么程序如何理解要使用的NewestNewsesSpecification實現? 它甚至不是DI框架。 還是僅僅是每當我需要不同的存儲時,我都需要在源代碼文件中查找和更改名稱空間?

本文的代碼使用Java。 我正在用C#編寫。

我只是很快閱讀了這篇文章。 他正在解釋存儲庫模式。 這有助於封裝實際使用的存儲庫的實現細節。 這樣,您可以交換基礎存儲庫,而無需修改客戶端代碼。 基礎細節封裝在Specification類中。 您必須將該基類的實現顯式傳遞給存儲庫,例如傳遞給“ query”方法。 這是客戶端必須通過創建適當的實例來決定使用(或查詢)哪個存儲庫的關鍵。

如果您有多個共享相同名稱的實現,則它們必須位於不同的名稱空間中以避免歧義。 如果您認為編譯器無法解析此沖突引用,那您是對的。 通常,您必須完全限定類型(例如,實例化,強制轉換):'new Sql.NewestNewsesSpecification()'或使用編譯器指令'using'或'import'聲明適當的名稱空間,以便可以使用縮寫形式:' new NewestNewsesSpecification()”。 本文假定您包括“ Sql”名稱空間或“ Realm”名稱空間。 我的主要想法是,顯示替換基礎存儲庫(上下文)時,哪些部分代碼會更改。 如果同時包含兩個名稱空間,則可以為其中一種實現指定別名,或使用完全限定的引用,以使這些引用不再歧義。

暫無
暫無

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

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