我在Visual Studio 2008中有一个C#.NET Compact Framework 3.5移动项目。该程序使用条形码扫描程序,适用于两种不同类型的Windows Mobile设备(均使用自己的SDK来操作条形码扫描程序)。如何有条件地添加对扫描仪SDK SDK DLL文件的引用?即,如果编译HARDWARE1配置,我不想添加对HARDWARE2-SCANNER-SDK.DLL的引用。
答案 0 :(得分:1)
您可以指定要在app.config文件中加载哪些DLL,然后使用Assembly.Load方法加载正确的库(库。)
这是一个简单的答案。但要真正完成这项工作,您可能需要创建一些共享API(也在单独的库中)的“包装”程序集,以便您的最终应用程序不必关心扫描仪信息的来源。它应该不知道正在使用什么硬件。
顺便说一句:这都与依赖注入的概念有关,虽然是在模块而不是类级别。以下是一些可以帮助您入门的资源:
http://msdn.microsoft.com/en-us/magazine/cc163739.aspx http://en.wikipedia.org/wiki/Dependency_injection
答案 1 :(得分:0)
为什么需要?如果您使用接口进行扫描程序访问,则一个实现将引用一个SDK,另一个实现将引用另一个SDK。
在运行时,您实际创建的类将尝试加载引用的程序集,如果您在实例化之前检测到硬件,则会加载正确的SDK引用。基本上,如果您不使用不存在的SDK,那么它将永远不会尝试加载它。
这是一个问题的唯一原因是两个SDK使用相同的类名。在那种情况下,我仍然以它为基础接口,但是对于接口的每个实现都有不同的DLL,这些项目将引用它们正确的SDK。