System.Diagnostics.Trace игнорирует настройки культуры - PullRequest
0 голосов
/ 28 января 2012
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$";
decimal value = 500;
Trace.TraceInformation("{0:C}", value);
Trace.TraceInformation(string.Format("{0:C}", value));

производит следующий вывод:

Information: 0 : ¤500.00
Information: 0 : 500,00$

Это означает, что он либо выполняет форматирование в другом потоке, либо игнорирует Thread.CurrentThread.CurrentCulture (возможно, заменяя его на инвариантный).ЗАЧЕМ?? MSDN хранит молчание .

1 Ответ

1 голос
/ 28 января 2012

Правильный, Trace вывод явно использует CultureInfo.InvariantCulture. Декомпилированный источник для TraceListener.TraceEvent имеет следующий вид:

this.WriteLine(string.Format(CultureInfo.InvariantCulture, format, args));

Вы уже предоставили обходной путь: формат для любой культуры на сайте вызовов.

...