为什么ReSharper会抱怨使用ResourceLoader.GetString?

Seb*_*zus 10 c# resharper localization embedded-resource windows-store-apps

我有一个Windows 8应用程序,我按照MSDN中的描述进行本地化.我的资源文件使用默认名称("Resources.resw")和位置("Strings\en-US"等).

在此输入图像描述

当我访问资源时ResourceLoader,ReSharper会抱怨.例:

private readonly ResourceLoader _resourceLoader = new ResourceLoader();

private void DoSomething()
{
    string s = _resourceLoader.GetString("TestEntry");
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ReSharper抱怨我正在创建一个模糊的引用,因为在几个资源文件中有几个"TestEntry"键.咄.这就是重点.资源管理应该自动使用正确的资源,确实如此.

那么,为什么ReSharper抱怨?它是在ReSharper的一个bug或者真的出问题了吗?

顺便说一句:ReSharper 建议(在其他相当无用的东西之外)提供放在resource:密钥字符串之前,_resourceLoader.GetString(resource: "TestEntry") (然后抱怨它是多余的).这使得ReSharper警告消失.那是做什么的?这是改进吗?

编辑:哦,我的!我不知何故认为resource:是一些特殊的语法,但它只是一个命名的方法参数 ...

Pet*_*eii 1

不要构造新的 ResourceLoader,而是尝试使用静态 GetForCurrentView() 方法来检索适当的 ResourceLoader。

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView();

private void DoSomething()
{
    string s = _resourceLoader.GetString("TestEntry");
}
Run Code Online (Sandbox Code Playgroud)