【问题标题】:Why does ReSharper complain about this use of ResourceLoader.GetString?为什么 ReSharper 抱怨这种 ResourceLoader.GetString 的使用?
【发布时间】:2013-07-02 14:17:17
【问题描述】:

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

当我通过ResourceLoader 访问资源时,ReSharper 会抱怨。示例:

private readonly ResourceLoader _resourceLoader = new ResourceLoader();

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

ReSharper 抱怨我创建了一个模棱两可的引用,因为在几个资源文件中有几个“TestEntry”键。呃。这就是重点。资源管理器应该自动使用正确的资源,确实如此。

那么,为什么 ReSharper 会抱怨呢?是 ReSharper 中的错误还是 真的出了什么问题?

顺便说一句:ReSharper 建议(以及其他相当无用的东西) 提议将 resource: 放在密钥字符串之前,例如 _resourceLoader.GetString(resource: "TestEntry") (然后抱怨它是多余的)。这会使 ReSharper 警告消失。那有什么作用?有进步吗?

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

【问题讨论】:

  • ReSharper recommends...and then complains that it's redundant 我开始觉得 Resharper 看起来很像我的女朋友。
  • " ReSharper 建议(以及其他相当无用的东西)将 resource: 放在键字符串之前" - 不。小心区分 ReSharper 的 Quick FixesContext Actions
  • @AakashM:哎呀。是的,你是对的。我已经相应地编辑了我的问题。
  • 你可能会觉得这篇文章很有趣:stackoverflow.com/questions/17527955/…
  • 也许您应该使用 Jetbrains 提出问题:youtrack.jetbrains.com/issues/RSRP

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


【解决方案1】:

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

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2019-07-18
    • 2011-01-14
    • 2015-06-09
    • 2020-08-12
    • 2016-02-27
    相关资源
    最近更新 更多