以编程方式读取.resx文件
时间:2020-03-06 14:56:49 来源:igfitidea点击:
我有一个应用程序,其中将发送的电子邮件内容存储在.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文件。
解决方案
资源放置不正确。
资源属于网站,应按参数发送到邮寄方法。
或者,资源属于邮件API dll,并且应保留在该资源中(.dll项目也可以具有.resx文件)。然后,邮寄方法应该毫无问题地找到资源,特别是如果我们将其嵌入dll本身。
我想我回答了我自己的问题...
有一个ResXResourceReader类。我找不到它,因为它在Windows Forms命名空间中,该命名空间未包含在我当前的DLL引用中。
不幸的是,这只会让我遍历结果,因此我将对其进行一些可爱的缓存(阅读:备忘录)。
The mailing method is in a DLL that all the projects in the solution share. In this other project, I obviously don't have an HttpContext.
是的你是。只要类库引用System.Web,HttpContext在从网站调用的任何dll中都可用。