Почему ReSharper жалуется на это использование ResourceLoader.GetString?

У меня есть приложение Windows 8, которое я локализую, как описано в MSDN. Мои файлы ресурсов используют имена по умолчанию ( "Resources.resw" ) и местоположения ( "Строки\en-US" и т.д.).

enter image description here

Когда я обращаюсь к ресурсам через ResourceLoader, ReSharper жалуется. Пример:

private readonly ResourceLoader _resourceLoader = new ResourceLoader();

private void DoSomething()
{
    string s = _resourceLoader.GetString("TestEntry");
}

enter image description here

ReSharper жалуется, что я создаю неоднозначную ссылку, потому что в нескольких файлах ресурсов есть несколько ключей TestEntry. Duh. Это все. Управление ресурсами должно автоматически использовать правильный ресурс, и это действительно так.

Итак, почему ReSharper жалуется? Это ошибка в ReSharper или есть там действительно что-то не так?

Кстати: ReSharper рекомендует (помимо прочих бесполезных вещей) предлагать поставить resource: перед строкой ключа, например _resourceLoader.GetString(resource: "TestEntry") (а затем жалуется, что она избыточна)удаp > . Это приведет к исчезновению предупреждения ReSharper. Что это делает? Это улучшение?

Изменить: О, мой! Я как-то думал, что resource: - это особый синтаксис, но это просто названный аргумент метода...

Ответ 1

Вместо создания нового ResourceLoader попробуйте использовать статический метод GetForCurrentView() для извлечения соответствующего ResourceLoader.

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView();

private void DoSomething()
{
    string s = _resourceLoader.GetString("TestEntry");
}