У меня проблема с получением правильных записей в файле ресурсов, и мне нужна помощь ... вот мой сценарий
У меня есть ряд проектов, которые являются частью большого решения для составления отчетов в следующем формате
Plugin. **** Сообщить о
- Справочник (папка)
- DataAccessLayer (папка)
- DataSets (папка)
- DataWrappers (папка)
Локализация (папка)
*. * CS 1019 *
Где * - название отчета, который я собираюсь сгенерировать
В * .cs есть оператор экспорта, так что я могу забрать его, используя MEF (не уверен, что это уместно, но подумал, что стоит упомянуть). Пространство имен в * .cs - это CompanyName.DataShaper.Plugin. * Report. Из-за имени проекта и расположения файлов я изменил пространство имен по умолчанию для каждого проекта на CompanyName.DataShaper.Plugin. * Отчет (это был просто Плагин. * Отчет до моего изменения).
Теперь о проблеме .. внутри * .cs Я создаю экземпляр ResourceManager. Это выглядит так ...
_resourceManager =
new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
Assembly.GetExecutingAssembly());
внутри моего файла Resx Designer у меня есть следующее ...
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
resourceMan = temp;
}
return resourceMan;
}
Мой звонок менеджеру ресурсов выглядит следующим образом ...
string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);
где _currentCultureInfo - правильный объект CultureInfo.
У меня есть 4 разных файла resx в папке Localization для каждого проекта, (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, **** Report.de-de.resx).
Когда я делаю вызов менеджеру ресурсов, я всегда получаю запись из .resx ... никогда не из других языковых файлов, независимо от объекта CultureInfo, который я передаю в вызов. Что я испортил?
-> Быстрое обновление моего исходного вопроса, но, похоже, оно связано с MEF. Я создал свой класс старомодным способом (new * Report ()) и сделал вызов локализации, и он отлично работает