繁体   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