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

10
我有一个Windows 8应用程序,按照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的一个bug还是真的有问题?
顺便说一下:ReSharper建议(除了其他相当无用的东西)在关键字符串前加上resource:,像_resourceLoader.GetString(resource: "TestEntry")(然后抱怨它是冗余的)。这使得ReSharper的警告消失了。那是什么意思?是一种改进吗?
编辑:哦我的天啊!我不知何故认为resource:是一些特殊的语法,但它只是一个命名方法参数...

19
ReSharper建议...然后抱怨它是多余的。我开始觉得Resharper很像我的女朋友。 - Conrad Clark
7
ReSharper建议在关键字前加上resource,这是其Quick Fixes之一,需要注意与Context Actions的区别。 - AakashM
3
也许你应该向Jetbrains提出问题:http://youtrack.jetbrains.com/issues/RSRP - Greg
你在这些文件中有指定“自定义工具”吗? - Mark Broadhurst
@SaintGerbil 这是关于Windows 8的内容。没有自定义工具,但有构建操作PRIResource。无论如何,这不是他的问题所在。 - Kris Vandermotten
显示剩余3条评论
1个回答

1

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

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView();

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接