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

时间:2013-07-04 14:16:31

标签: c# localization resharper windows-store-apps embedded-resource

我有一个Windows 8应用程序,我按照in the MSDN描述进行了本地化。我的资源文件使用默认名称(“Resources.resw”)和位置(“Strings \ 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”键。咄。这就是重点。资源管理应该自动使用正确的资源,确实如此。

那么,为什么ReSharper抱怨?这是ReSharper中的错误还是 真的错误?

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

编辑:哦,我的!我不知何故认为resource:是一些特殊的语法,但它只是一个named method argument ......

1 个答案:

答案 0 :(得分:1)

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

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView();

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