【问题标题】:How should I localise pluggable components我应该如何本地化可插拔组件
【发布时间】:2009-10-01 14:39:43
【问题描述】:

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

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

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

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

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

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

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

干杯...

【问题讨论】:

    标签: .net localization internationalization pluggable


    【解决方案1】:

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

    #3 是否有某些特定的内容不适合您?如果您指定我可能无法提供的帮助...

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多