10

我有一个Windows 8应用程序,我描述in the MSDN本地化。我的资源文件使用默认名称(“Resources.resw”)和位置(“Strings \ en-US”等)。为什么ReSharper会抱怨使用ResourceLoader.GetString?

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:是一些特殊的语法,但它只是一个named method argument ...

+19

'ReSharper建议......然后抱怨说这是多余的我开始觉得Resharper看起来很像我的女朋友。 –

+7

“ReSharper建议(除其他相当无用的东西)把资源:之前的密钥字符串” - 不。请注意区分ReSharper的[Quick Fixes](http://www.jetbrains.com/resharper/features/code_analysis.html#Quick-Fixes)和[Context Actions](http://www.jetbrains.com/resharper) /features/coding_assistance.html#Context_Actions) – AakashM

+0

@AakashM:糟糕。你是对的。我已经编辑了我的问题。 –

回答

1

而不是构建一个新的ResourceLoader,尝试使用静态GetForCurrentView()方法检索相应的ResourceLoader。

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView(); 

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