【问题标题】:Reading .resx files programmatically以编程方式读取 .resx 文件
【发布时间】:2008-09-30 20:41:34
【问题描述】:

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

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

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

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

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

如何阅读这些资源?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      邮件方法位于一个 DLL 中,该 DLL 解决方案中的所有项目 分享。

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

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

      【讨论】:

        【解决方案3】:

        您的资源放置有问题。

        要么你的资源属于网站,应该通过参数发送到mailing方法。

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

        【讨论】:

        • 将电子邮件添加到 DLL 的问题是,我们需要重新编译 DLL 以更改电子邮件内容,说白了,很糟糕。
        猜你喜欢
        • 2023-03-11
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多