2008-09-30 94 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中使用。