gpt4 book ai didi

.net - 如何在类库中访问全局资源进行本地化?

转载 作者:行者123 更新时间:2023-12-04 15:15:27 25 4
gpt4 key购买 nike

我有一个 asp.net 网站(不是 Web 应用程序),并且我已经使用资源文件 (.resx) 本地化了 UI 的文本。我还有一个包含业务逻辑的类库,还有一个返回错误消息的验证方法。我需要本地化该错误消息,但找不到访问我网站中全局资源文件的方法。在网站上,比如在后面的代码中,我可以使用 Resources.LocalisedText.MyErrorMessage(其中 LocalisedText 是我的资源文件 LocalisedText.resx 的名称)。但是在我的类库中,我无法获得对它的引用。

我找到了这个链接 http://weblogs.asp.net/rinze/archive/2008/12/03/using-globalization-resources-resx-in-a-class-library-or-custom-control.aspx它说它可以完成,但它似乎对我不起作用,可能是因为我无法为网站获得正确的命名空间?

最佳答案

我设法根据 resx 的设计器文件让它工作。如果您打开它并查看 ResourceManager属性(property)的get访问器,您基本上只需复制该行即可访问相同的资源。

完整解释

首先,你需要打开你的资源文件的.designer.cs文件。它应该在您的解决方案资源管理器中,如下图所示:

Resource file designer file location in solution explorer

只需双击打开它,然后扫描(它应该在顶部附近):internal static global::System.Resources.ResourceManager ResourceManager {
get访问器,您应该看到它为临时变量分配了一些东西。就我而言,它看起来像这样:

/*...*/ temp = new global::System.Resources.ResourceManager("Resources.Lang",
global::System.Reflection.Assembly.Load("App_GlobalResources"));

因此,基于此,我创建了 ResourceManager在我想在我的类库中使用的类中,如下所示:
ResourceManager lang = new ResourceManager("Resources.Lang",
Assembly.Load("App_GlobalResources"));

注意1:不要忘记添加 using System.Resources;using System.Reflection;到文件的顶部。
注意 2:这不需要将 Web 项目的引用添加到类库中。

然后,我只需调用 GetString我的 lang 上的方法变量来获取我想要的资源。
例如。 lang.GetString("MyErrorMessage") .
没有调用 Resources.Lang.MyErrorMessage那么优雅,但它完成了工作。

希望这可以帮助。如果您有任何问题,请在下方留言。

关于.net - 如何在类库中访问全局资源进行本地化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com