具有共享类的引用 DLL

Posted

技术标签:

【中文标题】具有共享类的引用 DLL【英文标题】:Referenced DLLs with shared classes 【发布时间】:2017-06-26 17:32:35 【问题描述】:

这是我遇到的问题。

项目 #1 - DLL

- 包括 SomeCommonFile.cs 文件和几个类

项目 #2 - 不同的 DLL

- 包括 SomeCommonFile.cs 文件和几个类

项目 #3 - 网络服务

- 包括 SomeCommonFile.cs 文件和几个类 - 包括对两个 DLL 文件的引用。

所以我已经在项目#3 中很好地导入了 DLL,在引用上放置了别名,并将“外部别名”放在相关代码文件的顶部。

但是在项目#3 中编码时会出现问题:SomeCommonFile.cs 中的每个类都有三个版本 - 每个 dll 一个版本,项目#3 中一个。有没有简单的方法来构造它,这样我就不必到处都有转换函数(将 Project1DLL.CommonClasses.MyClass 转换为 WebService.CommonClasses.MyClass 等)?在这一点上,我将链接项目#1 和#2 的代码文件而不是它们的 DLL,只是为了简化类,即使从维护的角度来看这听起来很糟糕。

【问题讨论】:

【参考方案1】:

解决方案是在您的解决方案中不包括三个不同项目中的每一个中的公共类。

如果您的两个 DLL 都需要引用一些公共代码,并且两者都不能引用另一个,那么请使用第 4 个 DLL,其中包含它们(以及 Web 项目)都引用的公共代码。

现在你只有一个类的副本,而且它们彼此都很好玩。

【讨论】:

以上是关于具有共享类的引用 DLL的主要内容,如果未能解决你的问题,请参考以下文章

如何包含具有多个 dll/dylib 的外部(共享)库

扩展类的Angular ContentChildren

使用 SWIG 从 C++ 初始化对 C# 共享指针的引用

共享程序集GAC

具有自定义元类的类的所有子类共享相同的属性,即使它们不应该

具有共享对象引用的两个变量的总大小是多少? [复制]