10

Ho un'applicazione Windows 8 che localizzo come descritto in the MSDN. I miei file di risorse utilizzano i nomi predefiniti ("Resources.resw") e le posizioni ("Strings \ en-US" ecc.).Perché ReSharper si lamenta di questo utilizzo di ResourceLoader.GetString?

enter image description here

Quando accedo le risorse tramite ResourceLoader, quindi ReSharper si lamenta. Esempio:

private readonly ResourceLoader _resourceLoader = new ResourceLoader(); 

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

enter image description here

ReSharper lamenta che sto creando un riferimento ambiguo, perché ci sono diversi tasti "TestEntry" in diversi file di risorse. Duh. Questo è il punto. La gestione delle risorse dovrebbe utilizzare automaticamente la risorsa corretta, e lo fa davvero.

Quindi, perché ReSharper si lamenta? È un bug in ReSharper o èdavvero qualcosa non va?

A proposito: ReSharper consiglia (tra le altre cose abbastanza inutili) offerte di mettere resource: prima della stringa chiave, come _resourceLoader.GetString(resource: "TestEntry") (e poi si lamenta che è ridondante) . Questo fa scomparire l'avviso di ReSharper. Cosa fa? È un miglioramento?

Modifica: Oh mio! In qualche modo ho pensato resource: è una certa sintassi speciale, ma è solo un named method argument ...

+19

'ReSharper consiglia ... e poi si lamenta che è ridondante' Sto iniziando a pensare che Resharper assomigli molto alla mia ragazza. –

+7

"ReSharper consiglia (tra le altre cose abbastanza inutili) di mettere la risorsa: prima della stringa di chiavi" - no. Fare attenzione a distinguere tra [Correzioni rapide] (http://www.jetbrains.com/resharper/features/code_analysis.html#Quick-Fixes) e [Azioni contestuali] di ReSharper (http://www.jetbrains.com/resharper). /features/coding_assistance.html#Context_Actions) – AakashM

+0

@AakashM: Oops. Si hai ragione. Ho modificato la mia domanda di conseguenza. –

risposta

1

Invece di costruire un nuovo ResourceLoader, provare a utilizzare il metodo GetForCurrentView statico() per recuperare il ResourceLoader appropriata.

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView(); 

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