c# - 从单独的程序集访问资源文件

标签 c# resources localization

我在我的 Web 项目中创建了一个资源文件来本地化该应用程序。因此,它将包含 Web 应用程序中标签和按钮等的所有翻译文本。但是,我也有一些后端代码,用于生成电子邮件并将其发送给我的用户,我希望这些电子邮件也能本地化。发送电子邮件的代码位于 Web 项目的单独程序集中,所以我想知道与程序集共享此资源文件的最佳方式是什么?

在我的 Web 项目代码中,我只是这样做:

HttpContext.GetGlobalResourceObject("Localization", "somekey").ToString();

所以我可以简单地在汇编代码中这样做:

System.Web.HttpContext.GetGlobalResourceObject("Localization", "somekey").ToString();

只要从我的 Web 应用程序调用该程序集,它就可以正常工作...但是如果出于某种原因我想从另一个非基于 Web 的应用程序调用该程序集的方法,那么将没有 HttpContext 和它会失败。是否有更好的推荐方法,以便我可以在两者之间共享资源?

非常感谢

最佳答案

您可以构建一个 ExpressionBuilder 来访问来自另一个程序集的字符串。

文章.NET String Resources包括带有表达式字符串的类 StringExpressionBuilder:

<asp:Label ID="AppTextLabel" runat="server" 
    Text="<%$ Strings:MyCompany.MyApp.MyStrings, AppText %>" />
<asp:Label ID="LibTextLabel" runat="server" 
    Text="<%$ Strings:MyCompany.MyLib.MyStrings, LibText %>" />

关于c# - 从单独的程序集访问资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864274/

相关文章:

xamarin - 在 Xamarin 中使用字符串资源文件

java - getResourceAsStream 返回 null

ios - 无法本地化 iOS 应用程序包显示名称

java - 如何在jsp中用波斯语呈现数字?

localization - IOs7 多 Storyboard本地化问题

c# 删除重复算法 LINQ

c# - 如何从 ASP.Net Core 配置文件中合并多个数组?

c# - 为什么 Resharper intellisense 会替换我的代码?

java - getClass().getResource() 仅适用于 Gradle

c# - EntityFramework 6 DatabaseFirst 禁用延迟加载