10

Mam aplikację Windows 8, którą lokalizuję zgodnie z opisem in the MSDN. Moje pliki zasobów używają domyślnych nazw ("Resources.resw") i lokalizacji ("Ciągi \ en-US" itd.).Dlaczego ReSharper narzeka na to użycie ResourceLoader.GetString?

enter image description here

Kiedy dostęp do zasobów poprzez ResourceLoader, następnie ReSharper narzeka. Przykład:

private readonly ResourceLoader _resourceLoader = new ResourceLoader(); 

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

enter image description here

ReSharper narzeka, że ​​tworzę niejednoznaczne odniesienia, ponieważ istnieje kilka „TestEntry” klucze w kilku plików zasobów. Duh. O to chodzi. Zarządzanie zasobami powinno automatycznie korzystać z właściwego zasobu i rzeczywiście.

Dlaczego więc ReSharper narzeka? Czy jest to błąd w ReSharper lub jest tam naprawdę coś nie tak?

Przy okazji: ReSharper zaleca (między innymi dość bezużyteczne rzeczy) ofert umieścić resource: przed kluczowym ciągiem, jak _resourceLoader.GetString(resource: "TestEntry") (a potem narzeka, że ​​jest zbędny) . Powoduje to zniknięcie ostrzeżenia ReSharper. Co to oznacza? Czy to jest poprawa?

Edytuj: Oh my! I jakoś myślałem resource: jest jakaś specjalna składnia, ale to tylko named method argument ...

+19

'ReSharper zaleca ... a następnie narzeka, że ​​jest zbędny" Zaczynam myśleć, że Resharper wygląda bardzo podobnie do mojej dziewczyny. –

+7

"ReSharper zaleca (między innymi dość bezużyteczne rzeczy), aby umieścić zasób: przed kluczowym ciągiem" - nie. Zachowaj ostrożność, aby odróżnić Szybkie poprawki ReSharpera (http://www.jetbrains.com/resharper/features/code_analysis.html#Quick-Fixes) i [Akcje kontekstowe] (http://www.jetbrains.com/resharper /features/coding_assistance.html#Context_Actions) – AakashM

+0

@AakashM: Ups. Tak masz rację. Odpowiednio zredagowałem moje pytanie. –

Odpowiedz

1

Zamiast budowy nowego ResourceLoader, spróbuj zastosować metodę GetForCurrentView statyczne(), aby pobrać odpowiedni ResourceLoader.

private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForCurrentView(); 

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