2010-03-05 76 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。