Esporta (0) Stampa
Espandi tutto

Classe ResourceProviderFactory

Funge da classe base per le classi che creano provider di risorse.

Spazio dei nomi: System.Web.Compilation
Assembly: System.Web (in system.web.dll)

public abstract class ResourceProviderFactory
public abstract class ResourceProviderFactory
public abstract class ResourceProviderFactory
Non applicabile.

ResourceProviderFactory è una classe astratta che funge da classe base per gli oggetti che restituiscono provider di risorse globali e locali. Le classi devono derivare da ResourceProviderFactory per implementarne la funzionalità.

Nell'esempio di codice riportato di seguito viene illustrata una factory di provider di risorse personalizzata per il recupero di valori nella 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];
        if (value == null)
        {
            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; }
}

System.Object
  System.Web.Compilation.ResourceProviderFactory

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft