İngilizce dilinde oku

Aracılığıyla paylaş


IResourceProvider Arabirim

Tanım

Bir sınıfın kaynak sağlayıcısı olarak görev yapması için uygulaması gereken arabirimi tanımlar.

C#
public interface IResourceProvider

Örnekler

Aşağıdaki kod örneği, önbelleğe alınmış değerleri alan özelleştirilmiş bir kaynak sağlayıcısı fabrikasını gösterir. Kaynak sağlayıcısı fabrikası, uygulayan IResourceProviderbir sınıfın örneğini oluşturur.

C#
[
    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; }
}

Açıklamalar

Kaynak sağlayıcısı, bir kaynak dosyasından değerlerin alınmasını kolaylaştırır. Sayfa ayrıştırma sırasında formun <%$ Resources: classKey, resourceKey %> bir ifadesiyle karşılaşıldığında, kaynak sağlayıcısı kaynak için yerelleştirilmiş değeri döndürür. sınıfı, ResourceProviderFactory değerleri almak için kullanılacak nesne örnekleri IResourceProvider oluşturur.

Özellikler

ResourceReader

Kaynaktan kaynak değerlerini okumak için bir nesne alır.

Yöntemler

GetObject(String, CultureInfo)

Anahtar ve kültür için bir kaynak nesnesi döndürür.

Şunlara uygulanır

Ürün Sürümler
.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