1

如果有人要开发一个依赖于供应商 DLL 的非特定版本的 .NET 组件 - 假设它与 My3rdPartyComponent.dll 一起工作,这是一个 .NET 程序集,但哪个版本并不重要。

在这个组件中找到的一些类实例需要传递到我的组件中。开发人员会引用我的组件 dll,但无法访问源代码。

基本上,我希望能够要求用户将 3rdPartyComponent.MyClass 的实例传递给我的组件函数,但我不在乎它是否是第 3 方 dll 的 1.1、2.2、2.23.980 等版本。

有没有办法在仍然输入我想要传递给我的组件的参数的同时做到这一点?我不想使用 Object 作为参考。

在我的组件项目中,我可以在程序集引用上指定 SpecificVersion=True。这会解决我的问题还是会有其他我没有看到的“dll 地狱”问题需要处理?

4

1 回答 1

0

本质上,不,你不能做你想做的事(至少据我所知)。.NET 版本控制的整个前提是程序集的不同版本是不同的程序集。因此,就 .NET 而言, 1.1版与1.1.13rdPartyComponent.MyClass版完全不同。无论好坏,这就是它的工作原理。3rdPartyComponent.MyClass

如果您无法控制第三方程序集,那么您可以支持这一点的唯一方法是使用反射。.NET 4 中的dynamic类型应该使它相当容易 - 但它仍然是一个 hack,如果界面以最轻微的方式发生变化(当然,这是版本控制的重点),它就会失败。

如果您对该程序集有一些控制权,您可以将一些接口提取到一个单独的程序集中,该程序集很少有任何重大更改,因此它的版本几乎永远不会改变。然后,您可以从该程序集中引用接口而不是具体类。

于 2010-06-08T23:44:51.497 回答