【发布时间】:2012-06-06 16:19:22
【问题描述】:
我们有一个应用程序,可以在其中切换不同版本的 3rd 方互操作库 (AutoCad)。我们使用的互操作 API 子集在互操作库的所有版本中都是相同的。
在重用客户端代码的同时引用不同版本的库最有效的方法是什么?
一种方法是使用反射:为每个使用的互操作接口定义一个包装器类型,并在包装器内使用反射从指定版本的互操作程序集加载互操作类型,并仅代理对互操作对象的每次调用。当使用的子集中的所有接口在所有互操作版本中完全相同时,这种方法对我来说看起来很浪费。
其他方法是在项目的不同配置中引用不同的互操作程序集。使用跨互操作程序集的相同接口,这应该允许为互操作程序集的每个版本编译不同版本的客户端程序集。我不确定如何在这种方法中实现的一件事是配置项目,以便它同时构建客户端程序集的所有版本,以将它们全部包含在单个分发中。
这里应该也可以使用代码生成器,但我不确定它有多难。
你会如何解决这类问题?
谢谢!
【问题讨论】:
-
使用后期绑定。只有在 C# 中使用 dynamic 关键字才能轻松实现。
标签: c# .net interop dry autocad