如何切换具有相同名称和不同名称空间的类?

时间:2018-12-20 21:06:07

标签: java c# design-patterns

我将这篇文章enter link description here涂成红色

本文的主要思想是使用具有相同名称的强制转换类以获取更多功能。 好的,我不理解。但是我无法理解这段代码:

repository.query(new NewestNewsesSpecification());

他具有sql的NewestNewsesSpecification和领域的NewestNewsesSpecification。

主要问题-如果类的名称相同但名称空间不同,那么程序如何才能理解要使用哪种实现NewestNewsesSpecification?它甚至不是DI框架。 还是只是每次我需要不同的存储空间时才需要在代码文件中查找和更改名称空间?

Java中的文章代码。我正在用C#编写;

1 个答案:

答案 0 :(得分:0)

我只是很快阅读了这篇文章。他正在解释存储库模式。这有助于封装实际使用的存储库的实现细节。这样,您可以交换基础存储库,而无需修改客户端代码。基础细节封装在Specification类中。您必须将该基本类的实现显式传递给存储库,例如进入“查询”方法。这是客户端必须通过创建适当的实例来决定使用(或查询)哪个存储库的关键。

如果您有多个共享相同名称的实现,则必须将它们驻留在不同的名称空间中以避免歧义。如果您认为编译器无法解析此冲突引用,那您是对的。通常,您必须完全限定类型(例如,实例化,强制转换):'new Sql.NewestNewsesSpecification()'或使用编译器指令'using'或'import'声明适当的名称空间,以便可以使用缩写形式:' new NewestNewsesSpecification()”。本文假定您包括“ Sql”名称空间或“ Realm”名称空间。我的主要想法是,显示替换基础存储库(上下文)时,哪些部分代码会更改。如果同时包含两个名称空间,则可以为其中一种实现指定别名,或使用完全限定的引用,以使这些引用不再歧义。