2008-09-30 93 views
2

我有一个应用程序,其中发送的电子邮件内容存储在.resx文件中。
这是一个ASP.Net应用程序,.resx文件生活在/ App_GlobalResources文件以编程方式读取.resx文件

当我需要发送一封电子邮件,我读这一点使用:

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

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

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

如何读取这些资源?

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

回答

3

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

不幸的是,这样只会让我通过迭代的结果,所以我会实现一些可爱的缓存(阅读:memoization的)超过它...

-1

某些东西与您的资源配置不符。

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

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

+0

将电子邮件添加到DLL的问题是,然后我们需要重新编译该DLL以更改电子邮件内容,这显然很糟糕。 – 2008-09-30 20:49:02

0

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

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

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

相关问题