#.net #.net-2.0 #resource-files
Вопрос:
У меня есть приложение, в котором содержимое отправляемых электронных писем хранится в файле .resx.
Это ЖЕРЕХ.Сетевое приложение, файл .resx находится в /App_GlobalResources
Когда мне нужно отправить электронное письмо, я читаю это с помощью:
HttpContext.GetGlobalResourceObject("MailContents", "EmailID").ToString
Теперь мне нужно использовать тот же метод рассылки из другого проекта (не веб-сайта). Метод рассылки находится в библиотеке DLL, которую используют все проекты в решении.
В этом другом проекте у меня, очевидно, нет HttpContext.
Как я могу прочитать эти ресурсы?
Мой текущий подход заключается в том, чтобы внутри класса рассылки проверить, является ли HttpContext.Current нулевым, и если да, то используйте отдельный метод.
Отдельный метод, который я рассматриваю сейчас (после того, как смирюсь с тем, что нет ничего лучше), заключается в том, чтобы путь к файлу .resx веб-сайта был сохранен в файле app.config и каким-то образом прочитал этот файл.
Я начал пробовать с Системой.Ресурсы.ResourceReader, но похоже, что ему нужен файл .resources, а не .resx.
Ответ №1:
Я думаю, что ответил на свой собственный вопрос…
Есть класс ResXResourceReader. Я не смог найти его, потому что он находится в пространстве имен Windows Forms, которое не включено в мои текущие ссылки на DLL.
К сожалению, это позволит мне только перебирать результаты, поэтому я применю к ним некоторое симпатичное кэширование (читай: запоминание)…
Ответ №2:
Метод рассылки находится в библиотеке DLL, которую используют все проекты в решении.
В этом другом проекте у меня, очевидно, нет HttpContext.
Да, ты знаешь. HttpContext доступен в любой библиотеке dll, вызываемой с веб-сайта, при условии, что библиотека классов ссылается на System.Web.
Ответ №3:
Что-то не так с вашим размещением ресурсов.
Либо ваш ресурс принадлежит сайту и должен быть отправлен методом рассылки по параметру.
Или ваш ресурс принадлежит библиотеке DLL API рассылки и должен храниться там (проекты.dll также могут содержать файлы .resx). Тогда у метода рассылки не должно возникнуть проблем с поиском ресурса, особенно если вы встроите его в саму библиотеку dll.
Комментарии:
1. Проблема с добавлением электронных писем в библиотеку DLL заключается в том, что затем нам нужно перекомпилировать библиотеку DLL, чтобы изменить содержимое электронной почты, что, откровенно говоря, отстой.