ResourceProviderFactory Classe

Definição

Serve como classe base para classes que criam fornecedores de recursos.

public ref class ResourceProviderFactory abstract
public abstract class ResourceProviderFactory
type ResourceProviderFactory = class
Public MustInherit Class ResourceProviderFactory
Herança
ResourceProviderFactory

Exemplos

O seguinte exemplo de código mostra uma fábrica personalizada de fornecedores de recursos que recupera valores em cache.

[
    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; }
}
<DesignTimeResourceProviderFactoryAttribute(GetType(CustomDesignTimeResourceProviderFactory))> _
Public Class CustomResourceProviderFactory
    Inherits ResourceProviderFactory
    Public Overrides Function CreateGlobalResourceProvider(ByVal classname As String) As IResourceProvider
        Return New CustomResourceProvider(Nothing, classname)
    End Function
    Public Overrides Function CreateLocalResourceProvider(ByVal virtualPath As String) As IResourceProvider
        Return New CustomResourceProvider(virtualPath, Nothing)
    End Function
End Class

' Define the resource provider for global and local resources.
Friend Class CustomResourceProvider
    Implements IResourceProvider
    Dim _virtualPath As String
    Dim _className As String

    Public Sub New(ByVal virtualPath As String, ByVal classname As String)
        _virtualPath = virtualPath
        _className = classname
    End Sub

    Private Function GetResourceCache(ByVal culturename As String) As IDictionary
        Return System.Web.HttpContext.Current.Cache(culturename)
    End Function

    Function GetObject(ByVal resourceKey As String, ByVal culture As CultureInfo) As Object Implements IResourceProvider.GetObject
        Dim value As Object
        Dim cultureName As String
        cultureName = Nothing
        If (IsNothing(culture)) Then
            cultureName = CultureInfo.CurrentUICulture.Name
        Else
            cultureName = culture.Name
        End If

        value = GetResourceCache(cultureName)(resourceKey)
        If (value = Nothing) Then
            value = GetResourceCache(Nothing)(resourceKey)
        End If
        Return value
    End Function


    ReadOnly Property ResourceReader() As IResourceReader Implements IResourceProvider.ResourceReader
        Get
            Dim cultureName As String
            Dim currentUICulture As CultureInfo
            cultureName = Nothing
            currentUICulture = CultureInfo.CurrentUICulture
            If (Not (String.Equals(currentUICulture.Name, CultureInfo.InstalledUICulture.Name))) Then
                cultureName = currentUICulture.Name
            End If

            Return New CustomResourceReader(GetResourceCache(cultureName))
        End Get
    End Property
End Class

Friend NotInheritable Class CustomResourceReader
    Implements IResourceReader
    Private _resources As IDictionary

    Public Sub New(ByVal resources As IDictionary)
        _resources = resources
    End Sub

    Function GetEnumerator1() As IDictionaryEnumerator Implements IResourceReader.GetEnumerator
        Return _resources.GetEnumerator()
    End Function

    Sub Close() Implements IResourceReader.Close

    End Sub

    Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
        Return _resources.GetEnumerator()
    End Function

    Sub Dispose() Implements IDisposable.Dispose

    End Sub
End Class

Observações

ResourceProviderFactory é uma classe abstrata que serve como classe base para objetos que retornam fornecedores globais e locais de recursos. As classes devem derivar de ResourceProviderFactory para implementar a sua funcionalidade.

Construtores

Name Description
ResourceProviderFactory()

Quando implementado numa classe derivada, inicializa uma nova instância da classe derivada.

Métodos

Name Description
CreateGlobalResourceProvider(String)

Quando sobreposto numa classe derivada, cria-se um fornecedor global de recursos.

CreateLocalResourceProvider(String)

Quando sobrescrito numa classe derivada, cria-se um fornecedor local de recursos.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também