Не удается получить значение из файла ресурсов с помощью отражения

У меня есть два файла .resx для локализации - Global.en.resx и Global.resx(ru). При попытке получить значение по имени с помощью ResourceManager столкнулся с проблемой: значение отображается только на русском языке.

ResourceManager rm = new ResourceManager(resourceType.FullName, resourceType.Assembly);
ResourceSet rs = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);
foreach (DictionaryEntry d in rs)
{
    if (d.Key.ToString() == propName) displayName = (string)d.Value;
}

resourceType — класс ресурсов, propName — имя свойства, которое я хочу отобразить. Помогите мне, пожалуйста


person ivanblin    schedule 15.07.2015    source источник
comment
Текущая культура английская или русская? Судя по именам ваших файлов ресурсов, я бы предположил, что текущая (по умолчанию) культура - русская...   -  person Ron Beyer    schedule 15.07.2015
comment
Я меняю текущую культуру, и она отлично работает, когда я просто отображаю ее из представления, используя @MyResources.Global.PropertyName. Но когда я пытаюсь получить значение с помощью отражения, это не удается, как описано выше.   -  person ivanblin    schedule 15.07.2015
comment
Это сбивает с толку, потому что в опубликованном вами примере вообще нет никакого отражения, поэтому вы использовали отражение? В приведенном вами примере вы получаете текущую культуру, которая, вероятно, является русской, и она будет работать, если вы измените текущую культуру, но если вы хотите другую культуру вернулся, вы не можете передать CultureInfo.CurrentCulture в GetResourceSet, вам нужно сделать английскую культуру и передать ее.   -  person Ron Beyer    schedule 15.07.2015
comment
На самом деле я использую отражение, чтобы получить ResourceType, но я не публиковал его здесь. В любом случае, вы абсолютно правы. Я проверил свой Thread.CurrentThread.CurrentUICulture, и по некоторым причинам его значение было ru. Спасибо!   -  person ivanblin    schedule 15.07.2015


Ответы (1)


Когда вы говорите, что пытаетесь получить значение по имени, вы имеете в виду ResourceManager? Вы можете получить ResourceManager любым доступным вам способом, но вы получаете ResourceSet по CultureInfo, а не по имени. Это ваша проблема.

person Bsa0    schedule 15.07.2015
comment
Что ты имеешь в виду? Если вы говорите о rm.GetString(propName), я тоже пробовал так, но он отображает не значение свойства, а отображает имя свойства (что вдвойне странно) - person ivanblin; 15.07.2015