2

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

当我需要发送电子邮件时,我正在使用:

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

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

在另一个项目中,我显然没有 HttpContext。

我如何阅读这些资源?

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

4

3 回答 3

3

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

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

于 2008-09-30T20:49:48.477 回答
0

邮寄方法位于解决方案中所有项目共享的 DLL 中。

在另一个项目中,我显然没有 HttpContext。

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

于 2008-10-10T06:20:01.647 回答
-1

您的资源放置有问题。

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

或者,您的资源属于邮件 API dll,应该保留在那里(.dll 项目也可以有 .resx 文件)。那么邮件方法在查找资源时应该没有问题,特别是如果您将其嵌入到 dll 本身中。

于 2008-09-30T20:47:21.697 回答