我在我的 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/