.net 我应该如何本地化可插拔组件

.net 我应该如何本地化可插拔组件,.net,localization,internationalization,pluggable,.net,Localization,Internationalization,Pluggable,我们有一个应用程序,它将从单独的DLL动态加载一些组件。这些组件有一个固定的名称,但我们希望向用户显示本地化的名称,因此名称需要本地化 名称需要本地化这一事实与组件本身无关,因此我们不想用DisplayName或LocalisedName这样的属性污染组件的模型,也不想让组件的资源存在于组件的dll中。但是,由于这些组件是可插拔的,我们无法在应用程序中使用显示名称的资源,因为当我们添加新组件时,应用程序的资源将需要更新,从而使组件无法插拔 这个问题有共同的解决方案吗?我们可以看到的可能解决方案是

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

名称需要本地化这一事实与组件本身无关,因此我们不想用DisplayName或LocalisedName这样的属性污染组件的模型,也不想让组件的资源存在于组件的dll中。但是,由于这些组件是可插拔的,我们无法在应用程序中使用显示名称的资源,因为当我们添加新组件时,应用程序的资源将需要更新,从而使组件无法插拔

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

1\有一个名为display name的属性,gui代码调用该属性来显示名称。如果资源与包含该组件的程序集的dll或附属dll位于同一dll中,则此操作正常。但这似乎用组件不应该关心的信息污染了模型

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

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

选项3是否可行?有没有其他我们没有考虑的选择


干杯…

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


3有没有什么特别的东西不适合你?如果您指定什么不需要,我可能可以帮助…

我玩了一会儿,最后得到了一些有用的东西。我已在另一个问题中概述了我提议的解决办法。如有任何反馈,将不胜感激。