Класс - это структура данных, а локализованное форматирование строк - это поведение. С точки зрения кода / компилятора, эти две вещи не имеют ничего общего друг с другом, и не имеет смысла устанавливать их для каждого класса. Эта проблема относится к области кода, который использует класс, или к коду внутри самого класса.
Глобальная информация о культуре задается для каждого потока (с использованием Thread.CurrentThread.CurrentCulture
или CultureInfo.CurrentCulture
). Одна вещь, которую вы можете сделать, это обернуть каждый метод класса в набор / восстановление культуры. Поскольку культура потоков для всех целей является глобальной переменной, это может стать проблематичным, если ваш класс когда-нибудь вызовет что-то другое.
Наилучший подход, если вы хотите указать культуру для вашего класса, это просто использовать экземпляр культуры для использования в качестве свойства класса, а затем использовать специфичные для культуры перегрузки большинства форматирования строки / числа функции.
class MyClass {
public CultureInfo Culture { get; set; }
public void GetSomeString() {
return new Int32().ToString(Culture);
}
}
Редактировать: Если присмотреться к вашему вопросу, я думаю, что вы хотите сделать что-то вроде:
var lastCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
try {
// loop over list here
}
finally {
Thread.CurrentThread.CurrentCulture = lastCulture;
}