0

我们有一个应用程序,它将从单独的 dll 中动态加载一些组件。这些组件有一个固定的名称,但我们希望向用户显示本地化的名称,因此需要对名称进行本地化。

名称需要本地化这一事实与组件本身无关,因此我们真的不想用 DisplayName 或 LocalisedName 之类的属性污染组件的模型,并让组件的资源存在于dll 用于组件。但是由于这些组件是可插入的,我们不能在应用程序中使用显示名称的资源,因为当我们添加新组件时,应用程序的资源需要更新,从而破坏了使组件可插入的意义.

这个问题有通用的解决方案吗?我们可以看到的可能解决方案是:

1\ 有一个名为显示名称的属性,gui 代码调用它来显示名称。这工作正常,资源存在于与包含该组件的程序集(或附属 dll)相同的 dll 中。但这似乎用组件不应该关心的信息污染了模型。

2\ 让具有 GUI 的应用程序从其自己的资源文件中查找命名组件的资源。这会失败,因为当添加包含新动态加载的组件的新程序集时,应用程序需要更新其资源。

3\ 让应用程序在组件来源的程序集资源中查找组件的本地化名称。这似乎很好,因为组件的程序集中存在本地化名称,因此与它一起分发,但是具有表示层的应用程序会发起从组件 dll 中查找本地化字符串,因此组件不需要知道任何关于本地化,因此它的模型没有受到污染。

选项3可能吗?还有其他我们没有考虑过的选择吗?

干杯...

4

1 回答 1

0

选项 3 是我会做的,我认为这是可能的。如果您知道插件的名称并且可以使用反射实例化一个类。然后,您查询该类以获取 LocalizedName,插件将从其资源程序集中获取该类。我假设您了解附属资源程序集的工作原理。

#3 有什么特别的东西对你不起作用吗?如果您指定什么我可能无法提供帮助...

于 2009-10-09T09:41:44.830 回答