ResX автоматически созданный файл для культуры Specifi c Доступ к ресурсам - PullRequest
0 голосов
/ 09 марта 2020

Есть ли способ автоматически сгенерировать файл, который может выполнять потокобезопасный, с учетом культуры c доступ к ресурсу? Текущий класс Resource.Designer.cs, сгенерированный Visual Studio для моего файла resx, выглядит следующим образом:

    private static global::System.Resources.ResourceManager resourceMan;

    private static global::System.Globalization.CultureInfo resourceCulture;

    [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Resource()
    {
    }

    /// <summary>
    ///   Returns the cached ResourceManager instance used by this class.
    /// </summary>
    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    public static global::System.Resources.ResourceManager ResourceManager
    {
        get
        {
            if (object.ReferenceEquals(resourceMan, null))
            {
                global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ServiceModels.Resource", typeof(Resource).Assembly);
                resourceMan = temp;
            }
            return resourceMan;
        }
    }

    /// <summary>
    ///   Overrides the current thread's CurrentUICulture property for all
    ///   resource lookups using this strongly typed resource class.
    /// </summary>
    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    public static global::System.Globalization.CultureInfo Culture
    {
        get
        {
            return resourceCulture;
        }
        set
        {
            resourceCulture = value;
        }
    }

    /// <summary>
    ///   Looks up a localized string similar to Hiii.
    /// </summary>
    public static string Hello
    {
        get
        {
            return ResourceManager.GetString("Hello", resourceCulture);
        }
    }

Это обеспечивает безопасный доступ к ресурсу "Hello", но он не является потокобезопасным при использовании разных файлов ресурсов разных культур. Например, с помощью этого кода вы должны установить ресурс как

Culture = CultureInfo.SomeCulture;

. Это установит культуру для всех потоков, использующих ResourceManager. Есть ли способ автоматически сгенерировать файл, который разрешает поточно-ориентированный, культурно-специфический c доступ к ресурсу, или мне нужно реализовать его самостоятельно?

1 Ответ

1 голос
/ 09 марта 2020

Thread.CurrentThread.CurrentCulture - это спецификация потока c Culture, которую большая часть библиотеки использует для таких вещей, как форматирование даты / времени или чисел, а в вашем случае - для получения переведенных строк.

https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.currentculture?view=netframework-4.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...