2010-03-05 59 views
1

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

回答

1

您可以指定哪些DLL(县)在您的app.config文件加载,然后用Assembly.Load方法加载正确的库(库)。

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

顺便说一句:这是所有相关的依赖注入的概念,尽管在模块,而不是一个一流水平。这里有一对夫妇的资源,让您开始:

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

0

你为什么需要?如果您使用接口访问扫描器,则一个实现将引用一个SDK,另一个实现将引用另一个SDK。

在运行时实际创建的类将试图加载引用的程序集,如果你实例,然后适当的SDK参考将被装载前检测硬件。基本上,如果你不使用不存在的SDK,它将永远不会尝试加载它。

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