【问题标题】:Add reference via code?通过代码添加参考?
【发布时间】:2010-03-05 15:41:00
【问题描述】:

我在 Visual Studio 2008 中有一个 C# .NET Compact Framework 3.5 移动项目。该程序使用条形码扫描仪并适用于两种不同类型的 Windows Mobile 设备(都使用自己的 SDK 来操作条形码扫描仪)。如何有条件地添加对扫描仪 SDK SDK DLL 文件的引用?即,如果为 HARDWARE1 配置编译,我不想添加对 HARDWARE2-SCANNER-SDK.DLL 的引用。

【问题讨论】:

    标签: windows-mobile barcode-scanner


    【解决方案1】:

    您可以在 app.config 文件中指定要加载的 DLL,然后使用 Assembly.Load 方法加载正确的库。

    这就是简单的答案。但是要真正完成这项工作,您可能需要创建一些共享公共 API(也在单独的库中)的“包装器”程序集,这样您的最终应用程序就不必关心扫描仪信息的来源。它应该不知道正在使用什么硬件。

    顺便说一句:这都与依赖注入的概念有关,尽管是在模块而不是类级别。以下是一些帮助您入门的资源:

    http://msdn.microsoft.com/en-us/magazine/cc163739.aspx http://en.wikipedia.org/wiki/Dependency_injection

    【讨论】:

      【解决方案2】:

      为什么需要?如果您使用一个接口进行扫描仪访问,那么一个实现将引用一个 SDK,而另一个实现将引用另一个 SDK。

      在运行时,您实际创建的类将尝试加载引用的程序集,如果您在实例化之前检测到硬件,则将加载正确的 SDK 引用。基本上,如果您不使用不存在的 SDK,那么它永远不会尝试加载它。

      这会成为问题的唯一原因是两个 SDK 使用相同的类名。在那种情况下,我仍然会基于它进行接口,但是对于接口的每个实现都有不同的 DLL,并且这些项目将引用它们正确的 SDK。

      【讨论】:

        猜你喜欢
        • 2022-11-07
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多