2009-10-01 25 views
0

我們有一個應用程序可以動態地從單獨的dll中加載一些組件。這些組件具有固定的名稱,但我們希望將本地化名稱顯示給用戶,因此名稱需要進行本地化。我應該如何本地化可插拔組件

該名稱需要本地化的事實並不是組件本身的問題,因此我們並不真正想用像DisplayName或LocalisedName這樣的屬性來污染該組件的模型,併爲該組件的資源組件住在該組件的dll中。但是由於這些組件是可插入的,因此我們不能讓顯示名稱的資源存在於應用程序中,因爲當我們添加新組件時,應用程序的資源需要更新,從而導致組件可插入。

這個問題是否有共同的解決方案?我們可以看到的可能的解決方案如下:

1 \有一個稱爲顯示名稱的屬性,gui代碼調用它來顯示名稱。這工作正常,資源與包含該組件的程序集相同的dll中存在(或衛星dll)。但是這似乎污染了該組件不應該關心的信息。

2 \讓GUI的應用程序從它自己的資源文件中查找指定組件的資源。這會失敗,因爲當添加包含新動態加載組件的新程序集時,應用程序需要更新其資源。

3 \讓應用程序查看組件的資源,該組件的來源是組件的本地化名稱。這看起來不錯,因爲本地化名稱存在於組件的組件中,因此與它一起分發,但具有表示層的應用程序會激發對組件dll中本地化字符串的查找,因此組件不需要知道任何有關本地化,所以它的模型沒有污染。

選項3可能嗎?有沒有其他的選擇我們沒有考慮?

歡呼聲......

回答

0

選項3是我會做的,我認爲這是可能的。如果您知道插件的名稱並且可以使用反射來實例化一個類。然後,您可以查詢該類的LocalizedName,該插件將從其資源組件中獲取該LocalizedName。我想你知道衛星資源組件如何工作。

有沒有什麼特定的#3不適合你?如果你指定什麼不能幫助我...

+0

我玩過一段時間,最後得到了一些有用的東西。我在另一個問題中概述了我提出的解決方案。 http://stackoverflow.com/questions/1559716/is-this-a-good-solution-for-localisation-of-pluggable-components 任何反饋將不勝感激。 – 2009-10-13 11:46:30

+0

在那裏看到我的評論... – psychotik 2009-10-13 23:43:34