2012-04-06 67 views
0

我有一個winforms應用程序。我把它交給三個客戶,每個客戶只需要一個小的調整或針對他們的定製。要做到這一點,我必須爲每個客戶保留一個單獨的版本。我可能會以許多版本這樣做。我認爲依賴注入將是如何處理這個,但是我聽說你必須在主方法中註冊你的依賴關係,並且你仍然需要爲每個客戶端DLL添加一個引用,所以我仍然需要不同的版本。面向對象的首選方法是什麼?任何更好的方法來處理這個?更改特定客戶端的winform應用程序

+0

聽起來像你沒有收取足夠的錢進行這些定製。 – 2012-04-06 17:50:14

+0

存儲便宜。無論如何,界面應該與業務邏輯分離。如果他們要求定製業務邏輯,它應該是一個叉開始,我真的不明白這個問題。 – 2012-04-06 18:27:22

回答

3

可以使用Plug-in patten在運行時加載組件:(來自鏈路)

分隔接口(476)經常被用來當應用程序代碼在多個運行時環境中運行,每個都需要特定行爲的不同的實現。

大多數DI框架都提供這種功能。你可以在搜索框中選擇很多範例 - 如果你不想roll your own

  1. Ninject
  2. MEF
0

您可以使用配置文件來配置你的DI容器,這樣就可以重複使用不同的配置文件相同的二進制代碼來實現不同的自定義設置。但是您需要確保您徹底測試了所有不同的配置。略微不同的相同應用程序版本並不會導致無法預料的中斷。

0

根據customixations的性質,您可能能夠將所有相關修改捕獲到項目的不同部分(而不是將它們保持在整個項目中)。如果可以的話(例如,客戶端提供文件環境功能),則可以動態加載DLL(例如,基於配置文件),並允許DLL中的函數執行必要的功能以完成定製(基於參數由主代碼提供)。

這樣,您可以根據客戶端的需要,爲您的代碼提供預定義的掛鉤,以便動態更改(即使僅在啓動時加載dll)。如果客戶端需要更改不同的功能,則可以將這些DLL分成多個DLL,但不一定是所有功能的所有CLINET。然後您可以提供DLL的「默認」版本。

誰開發鉤子取決於你的客戶端設置。

確保您提供了有關這些鉤子應該如何工作的足夠文檔 - 即使您最終開發它們。