IResourceProvider.GetObject(String, CultureInfo) Метод

Определение

Возвращает объект ресурса для ключа и региональных параметров.

public object GetObject (string resourceKey, System.Globalization.CultureInfo culture);

Параметры

resourceKey
String

Ключ, являющийся идентификатором определенного ресурса.

culture
CultureInfo

Языковые параметры, по которым определяется локализованное значения ресурса.

Возвращаемое значение

Объект Object, содержащий значение ресурса для параметров resourceKey и culture.

Примеры

В следующем примере кода показана настраиваемая фабрика поставщика ресурсов, которая извлекает кэшированные значения. Фабрика поставщиков ресурсов создает экземпляр настраиваемого поставщика ресурсов, реализующего IResourceProvider. Поставщик ресурсов включает настраиваемый GetObject метод.

[
    DesignTimeResourceProviderFactoryAttribute(
        typeof(CustomDesignTimeResourceProviderFactory))
]
public class CustomResourceProviderFactory : ResourceProviderFactory
{
    public override IResourceProvider
      CreateGlobalResourceProvider(string classname)
    {
        return new CustomResourceProvider(null, classname);
    }
    public override IResourceProvider
      CreateLocalResourceProvider(string virtualPath)
    {
        return new CustomResourceProvider(virtualPath, null);
    }
}

// Define the resource provider for global and local resources.
internal class CustomResourceProvider : IResourceProvider
{
    string _virtualPath;
    string _className;

    public CustomResourceProvider(string virtualPath, string classname)
    {
        _virtualPath = virtualPath;
        _className = classname;
    }

    private IDictionary GetResourceCache(string culturename)
    {
        return (IDictionary)
            System.Web.HttpContext.Current.Cache[culturename];
    }

    object IResourceProvider.GetObject
        (string resourceKey, CultureInfo culture)
    {
        object value;

        string cultureName = null;
        if (culture != null)
        {
            cultureName = culture.Name;
        }
        else
        {
            cultureName = CultureInfo.CurrentUICulture.Name;
        }

        value = GetResourceCache(cultureName)[resourceKey];
        value ??= GetResourceCache(null)[resourceKey];
        return value;
    }

    IResourceReader IResourceProvider.ResourceReader
    {
        get
        {
            string cultureName = null;
            CultureInfo currentUICulture = CultureInfo.CurrentUICulture;
            if (!String.Equals(currentUICulture.Name,
                CultureInfo.InstalledUICulture.Name))
            {
                cultureName = currentUICulture.Name;
            }

            return new CustomResourceReader
                (GetResourceCache(cultureName));
        }
    }
}

internal sealed class CustomResourceReader : IResourceReader
{
    private IDictionary _resources;

    public CustomResourceReader(IDictionary resources)
    {
        _resources = resources;
    }

    IDictionaryEnumerator IResourceReader.GetEnumerator()
    {
        return _resources.GetEnumerator();
    }

    void IResourceReader.Close() { }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return _resources.GetEnumerator();
    }

    void IDisposable.Dispose() { return; }
}

Комментарии

При реализации GetObject метод возвращает локализованное значение для ключа ресурса на основе текущего языка и региональных параметров. Реализующий класс может получить свойство, CurrentUICulture если значение параметра culture не передается.

Применяется к

Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1