2008-09-30 3 views
2

У меня есть приложение, в котором содержимое отправляемых сообщений электронной почты сохраняется в файле .resx.
Это приложение ASP.Net, файл .resx живет в/App_GlobalResourcesЧтение .resx файлов программным способом

Когда мне нужно отправить по электронной почте, я читаю это с помощью:

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

Теперь мне нужно использовать тот же метод рассылки из другого проекта (а не веб-сайта). Метод рассылки находится в DLL, что все проекты в решении разделяют.

В этом другом проекте у меня явно нет HttpContext.

Как я могу прочитать эти ресурсы?

Мой текущий подход заключается в том, что внутри класса Mailing проверяется, является ли HttpContext.Current значением null, и если да, используйте отдельный метод.
Отдельный метод, который я сейчас рассматриваю (после того, как я отказался от того, что нет ничего лучше), должен иметь путь к файлу .resx веб-сайта, хранящегося в файле app.config, и каким-то образом прочитать этот файл ,
Я начал с System.Resources.ResourceReader, но похоже, что он хочет файл .resources, а не .resx.

ответ

3

Я думаю, что я ответил на свой вопрос ...
Существует класс ResXResourceReader. Я не мог найти его, потому что он находится в пространстве имен Windows Forms, который не включен в мои текущие ссылки DLL.

К сожалению, это позволит мне только перебирать результаты, так что я буду реализовывать некоторое милое кэширование (читайте: запоминание) над ним ...

-1

Что-то не так с вашим размещением ресурсов.

Либо ваш ресурс принадлежит веб-сайту, и его следует отправить по методу отправки по параметру.

Или ваш ресурс принадлежит DLL API почтовой рассылки и должен храниться там (DLL-проекты могут иметь также файлы .resx). Тогда метод рассылки не должен иметь проблем с поиском ресурса, особенно если вы вставляете его в самой dll.

+0

Проблема с добавлением электронных писем в DLL заключается в том, что тогда нам нужно перекомпилировать DLL, чтобы изменить содержимое электронной почты, которое, очевидно, отстойно. – 2008-09-30 20:49:02

0

метод рассылки в DLL, которая все проекты в решении доля.

В этом другом проекте я, очевидно, не имеет HttpContext.

Да, это так. HttpContext доступен в любой DLL, вызванной с веб-сайта, если библиотека классов ссылается на System.Web.

Смежные вопросы