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

时间:2011-07-28 19:02:01

标签: c# resources localization

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

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

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

所以我可以在汇编代码中执行此操作:

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

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

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以构建 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 %>" />