我们有一个应用程序,它将从单独的 dll 中动态加载一些组件。这些组件有一个固定的名称,但我们希望向用户显示本地化的名称,因此需要对名称进行本地化。
名称需要本地化这一事实与组件本身无关,因此我们真的不想用 DisplayName 或 LocalisedName 之类的属性污染组件的模型,并让组件的资源存在于dll 用于组件。但是由于这些组件是可插入的,我们不能在应用程序中使用显示名称的资源,因为当我们添加新组件时,应用程序的资源需要更新,从而破坏了使组件可插入的意义.
这个问题有通用的解决方案吗?我们可以看到的可能解决方案是:
1\ 有一个名为显示名称的属性,gui 代码调用它来显示名称。这工作正常,资源存在于与包含该组件的程序集(或附属 dll)相同的 dll 中。但这似乎用组件不应该关心的信息污染了模型。
2\ 让具有 GUI 的应用程序从其自己的资源文件中查找命名组件的资源。这会失败,因为当添加包含新动态加载的组件的新程序集时,应用程序需要更新其资源。
3\ 让应用程序在组件来源的程序集资源中查找组件的本地化名称。这似乎很好,因为组件的程序集中存在本地化名称,因此与它一起分发,但是具有表示层的应用程序会发起从组件 dll 中查找本地化字符串,因此组件不需要知道任何关于本地化,因此它的模型没有受到污染。
选项3可能吗?还有其他我们没有考虑过的选择吗?
干杯...