CA1305 jest wywoływana, gdy istnieje przeciążenie, które wymaga IFormatProvider
, ale to przeciążenie nie jest używane w kodzie.CA1305: Szczegółowość podczas określania kultury
Na przykład, następujący kod podnosi to ostrzeżenie:
string.Format("{0} - {1}", id, name);
Oczywistym sposobem, aby pozbyć się tego ostrzeżenia jest określenie kultury do stosowania:
string.Format(CultureInfo.InvariantCulture, "{0} - {1}", id, name);
Myślę jednak, to jest zbyt gadatliwe.
Jakie alternatywy istnieją?
OK, to coś, co wymyśliłem sobie, wygląda to teraz w moim kodzie: 'Format.Invariant (" {0} - {1} ", id, nazwa)' i 'Format.ForUI'. Problem polega na tym, że rozwiązuje to tylko 'string.Format'. To nie rozwiąże żadnego innego przypadku tego ostrzeżenia ... –
Yup. Prawdopodobnie zakończyłbyś tworzenie par metod fasady dla każdej metody formatowania, którą często wywołujesz. Ponadto, jeśli przejdziesz tę trasę, powinieneś wiedzieć, że CA2241 ([ProvideCorrectArgumentsToFormattingMethods] (http://msdn.microsoft.com/en-us/library/ms182361.aspx)) nie wyświetli ekranu fasady, więc możesz chcesz rozważyć dodanie niestandardowej reguły, która będzie. –
Co sądzisz o klasie statycznej 'For' z dwiema własnościami' Invariant' i 'UI'? 'Invariant' po prostu zwróci' CultureInfo.InvariantCulture', a 'UI' zwróci' CultureInfo.CurrentCulture'. Doprowadziłoby to do kodu takiego jak to: 'string.Format (For.Newariant," {0} - {1} ", id, name);' i dodatkowo może być użyte w każdym scenariuszu, który podnosi CA1305 i rozwiązuje problem z CA2241. –