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