以编程方式读取.resx文件

时间:2008-09-30 20:41:34

标签: .net .net-2.0 resource-files

我有一个应用程序,其中发送的电子邮件的内容存储在.resx文件中 这是一个ASP.Net应用程序,.resx文件位于/ App_GlobalResources

当我需要发送电子邮件时,我正在使用以下方式阅读:

 HttpContext.GetGlobalResourceObject("MailContents", "EmailID").ToString

现在,我需要从另一个项目(而不是网站)使用相同的邮件方法。邮件方法位于DLL中,解决方案中的所有项目都共享。

在这个其他项目中,我显然没有HttpContext。

我如何阅读这些资源?

我目前的方法是,在Mailing类中,检查HttpContext.Current是否为null,如果是,则使用单独的方法。
我现在正在看的单独方法(在让自己辞职之后没有更好的事实)是将网站的.resx文件的路径存储在app.config文件中,并以某种方式读取该文件。登记/> 我开始尝试使用System.Resources.ResourceReader,但看起来它想要一个.resources文件,而不是.resx文件。

3 个答案:

答案 0 :(得分:3)

我想我回答了自己的问题...... 有一个ResXResourceReader类。我找不到它,因为它位于Windows Forms命名空间中,该命名空间不包含在我当前的DLL引用中。

不幸的是,这只会让我遍历结果,所以我会在它上面实现一些可爱的缓存(读取:memoization)......

答案 1 :(得分:0)

  

邮件方法在DLL中   解决方案中的所有项目   份额。

     

在这个其他项目中,我很明显   没有HttpContext。

是的,你这样做。只要类库引用System.Web,HttpContext就可以在从网站调用的任何dll中使用。

答案 2 :(得分:-1)

您放置资源时出现问题。

您的资源属于该网站,应通过参数发送到邮件方法。

或者,您的资源属于邮件API dll,应该保存在那里(.dll项目也可以包含.resx文件)。然后邮件方法应该没有问题找到资源,特别是如果你将它嵌入到DLL本身。