от
Я пытаюсь реализовать приложение мультикультурном, где пользователи могут изменить язык, формат даты и т. д. Я писал ядро, она возвращает исключение: Системы.Исключение InvalidOperationException: экземпляр только для чтения.
switch (culture)
    {
        case SystemCulture.English:
                Thread.CurrentThread.CurrentCulture = new CultureInfo(CultureCodes.English);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(CultureCodes.English);
                break;
                        //another cultures here
    }
    switch (cultureFormat)
    {
        case SystemDateFormat.European:
                  var europeanDateFormat = CultureInfo.GetCultureInfo(CultureCodes.Italian).DateTimeFormat;
                  Thread.CurrentThread.CurrentCulture.DateTimeFormat = europeanDateFormat;
                  Thread.CurrentThread.CurrentUICulture.DateTimeFormat = europeanDateFormat;
                  break;
    //another cultures here
    }
Я нашел некоторую информацию в интернете, и я должен использовать новый экземпляр объекта моей культуры, я изменил мой код просто добавить:
CultureInfo myCulture;

switch (culture)
{
       case SystemCulture.English:
            myCulture= new CultureInfo(CultureCodes.English);
            break;
}
и ржали, из переключателя :
Thread.CurrentThread.CurrentCulture = cultureInfo;
Я не знаком с потоками, и я не уверен, если я использовал правильно. Не могли бы вы, пожалуйста, предложите мне, как сделать это правильно ?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Вы получите сообщение об ошибке
Instance is read потому что вы пытаетесь изменить свойство только для чтения, культура, с помощью ниже код. 

Thread.CurrentThread.CurrentCulture.DateTimeFormat = europeanDateFormat;
Вы можете проверить, является ли культура чтения через своего имущества
IsReadOnly
; встроенный из них. Вместо этого, вы должны сделать клон/копию активного культуры, применять какие-либо изменения, на что клон и назначить одного к
CurrentCulture
и/или
CurrentUICulture
текущего потока.
var clone = Thread.CurrentThread.CurrentCulture.Clone() as CultureInfo;
clone.DateTimeFormat = CultureInfo.GetCultureInfo("it").DateTimeFormat;

Thread.CurrentThread.CurrentCulture = clone;
Thread.CurrentThread.CurrentUICulture = clone; 
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...