.net 程序集A1的类C实现程序集A2的接口。使用C时,需要同时参考A1和A2

.net 程序集A1的类C实现程序集A2的接口。使用C时,需要同时参考A1和A2,.net,architecture,dependencies,.net,Architecture,Dependencies,根据中的答案,这是设计的 但我真的不想引用这两个程序集,这感觉就像我在破坏封装A1的用户不应该知道A1使用A2来实现它 我考虑将接口定义移动到另一个程序集,我们称之为Core,并让A2和A1的客户机引用它。我觉得这更干净 我的问题是:这个设计好吗?或者我不知道有没有一个标准的.NET解决方案?另一方面,我担心Core最终会成为一个完全不相关的接口的糟糕组合。。。你觉得怎么样?首先,这不会破坏封装 封装意味着实现细节不相关-只要您对接口编程,封装就完好无损 第二,如果您想同时使用接口和实现,那么您

根据中的答案,这是设计的

但我真的不想引用这两个程序集,这感觉就像我在破坏封装A1的用户不应该知道A1使用A2来实现它

我考虑将接口定义移动到另一个程序集,我们称之为Core,并让A2和A1的客户机引用它。我觉得这更干净


我的问题是:这个设计好吗?或者我不知道有没有一个标准的.NET解决方案?另一方面,我担心Core最终会成为一个完全不相关的接口的糟糕组合。。。你觉得怎么样?

首先,这不会破坏封装

封装意味着实现细节不相关-只要您对接口编程,封装就完好无损


第二,如果您想同时使用接口和实现,那么您需要引用组件,这两个组件都处于忽略插件体系结构的状态。你的代码还能如何工作?如果没有对实现的引用,则无法实例化具体类型。如果没有对接口的引用,就不能在代码中使用它。

首先,这不会破坏封装

封装意味着实现细节不相关-只要您对接口编程,封装就完好无损


第二,如果您想同时使用接口和实现,那么您需要引用组件,这两个组件都处于忽略插件体系结构的状态。你的代码还能如何工作?如果没有对实现的引用,则无法实例化具体类型。如果没有对接口的引用,则不能在代码中使用它。

C没有私有继承。如果类A1实现了接口A2,那么这就是公开信息,公开给类A1的用户,就像A2是基类而不是接口一样


是的,您必须引用这两个程序集。

C没有私有继承。如果类A1实现了接口A2,那么这就是公开信息,公开给类A1的用户,就像A2是基类而不是接口一样


是的,您必须引用这两个组件。

我满意地解决了它,请告诉我您的想法:

警告:这是特定于IDE的,不知道是否可以在SharpDevelop中实现

在A1中,不是参照A2部件,而是在Visual Studio中,在A1项目上单击鼠标右键,然后选择“添加现有项”。选择接口文件。在按下Add按钮之前,请注意它是一个下拉按钮:将其放下并选择Add as Link。如果您不这样做,您将不得不保存接口的多个副本,这是一个麻烦

如果从A1到A2使用的只是接口,请删除该引用

瞧!A1的客户只需要A1的参考。我认为这是因为现在接口是在A1和A2组件中定义的类型。我不认为这会危及manteinance,因为接口仍然只在一个源代码文件中定义。好的,它被编译成两个程序集,所以它是一种二进制复制,但我认为这并不坏。。。你知道吗


我满意地解决了这个问题,请告诉我你的想法:

警告:这是特定于IDE的,不知道是否可以在SharpDevelop中实现

在A1中,不是参照A2部件,而是在Visual Studio中,在A1项目上单击鼠标右键,然后选择“添加现有项”。选择接口文件。在按下Add按钮之前,请注意它是一个下拉按钮:将其放下并选择Add as Link。如果您不这样做,您将不得不保存接口的多个副本,这是一个麻烦

如果从A1到A2使用的只是接口,请删除该引用

瞧!A1的客户只需要A1的参考。我认为这是因为现在接口是在A1和A2组件中定义的类型。我不认为这会危及manteinance,因为接口仍然只在一个源代码文件中定义。好的,它被编译成两个程序集,所以它是一种二进制复制,但我认为这并不坏。。。你知道吗


这是如何打破封装的?也许我的用词是错误的。假设C实现的接口在C++中不被C的客户端使用,这将用私有继承Irrc来完成。我想在此处隐藏该实现的详细信息:这是如何打破封装的?也许我的用词是错误的。假设C实现的接口在C++中不被C的客户端使用,这将用私有继承Irrc来完成。我想在此处隐藏该实现的详细信息:关于第二点:我主要是C++的家伙。因此,我在.h文件中编写接口,必要时包括它们
d一切加起来。在跨项目使用这些接口时,它们不属于特定的项目,这让我感觉更自然。达里奥·拉莫斯(dario_ramos)——其实没有。您可以在一个程序集中有所有接口,在另一个程序集中有实现。但这与头文件几乎不一样。关于第二点:我主要是C++的家伙。所以我用.h文件编写我的接口,在必要的地方包括它们,所有的东西都加起来了。在跨项目使用这些接口时,它们不属于特定的项目,这让我感觉更自然。达里奥·拉莫斯(dario_ramos)——其实没有。您可以在一个程序集中有所有接口,在另一个程序集中有实现。但这与头文件几乎不一样。