Я не понимаю, почему мистер Пассант предупреждает об этом и одновременно говорит, что это нормально - делать «временные» «локальные» изменения в культуре. Как мы видели, ни одна культура потоков не является действительно локальной для потоков - она доступна всем, кто может ссылаться на поток через открытые свойства. И если это нормально, чтобы изменить его на короткое время, то почему не нормально, чтобы изменить его на более длительное время? Где вы пересекаете черту и почему?
Также я не совсем понимаю, что ОП считает, что «не должно быть необходимости» писать код для копирования того, что он хочет скопировать. Возможно, вы захотите поместить этот код где-нибудь, где вы сможете использовать его повторно, но кроме этого я действительно не вижу проблемы с кодом. В моей книге это гораздо более просто и замечательно, чем любое лямбда-выражение, которое я когда-либо видел, и оно отлично справилось бы с этой работой. Написание причудливого кода ради причудливости, по крайней мере, не в моем стиле.
Вы можете сделать что-то вроде этого:
// Program.cs
static CultureInfo culture, uiCulture;
[STAThread]
static public void Main()
{
var t = Thread.CurrentThread;
culture = t.CurrentCulture;
uiCulture = t.CurrentUICulture;
}
static public Thread CreateThread()
{
return new Thread() { CurrentCulture = culture, CurrentUICulture = uiCulture }; }
}