我在Visual Studio2008中有一个C# .NET Compact Framework3.5移动项目。该程序使用条形码扫描仪,适用于两种不同类型的Windows Mobile设备(都使用各自的SDK来操作条形码扫描仪)。如何有条件地添加对scanner SDK SDK DLL文件的引用?也就是说,如果针对HARDWARE1配置进行编译,我不想添加对HARDWARE2-SCANNER-SDK.DLL的引用。
发布于 2010-03-05 23:50:21
您可以指定要在app.config文件中加载的DLL,然后使用Assembly.Load方法加载适当的库。
这就是简单的答案。但是要真正做到这一点,你可能需要创建几个“包装器”程序集,它们共享一个公共的API (也在一个单独的库中),这样你的最终应用程序就不必关心你的扫描仪信息从哪里来了。它应该对正在使用的硬件一无所知。
顺便说一句,这一切都与依赖注入的概念有关,尽管是在模块级别而不是类级别。这里有几个资源可以让你入门:
http://msdn.microsoft.com/en-us/magazine/cc163739.aspx http://en.wikipedia.org/wiki/Dependency_injection
发布于 2010-03-06 00:08:56
为什么你需要这样做?如果您使用一个接口来访问扫描器,那么一个实现将引用一个SDK,另一个实现将引用另一个SDK。
在运行时,您实际创建的类将尝试加载引用的程序集,如果您在实例化之前检测到硬件,则将加载正确的SDK引用。基本上,如果你不使用不存在的SDK,那么它永远不会尝试加载它。
这将是一个问题的唯一原因是如果两个SDK使用相同的类名。在这种情况下,我仍然使用基于接口的接口,但对于接口的每个实现都有不同的DLL,这些项目将引用其相应的SDK。
https://stackoverflow.com/questions/2387921
复制相似问题