ResourceProviderFactory Class

ResourceProviderFactory Class

 

Serves as the base class for classes that create resource providers.

Namespace:   System.Web.Compilation
Assembly:  System.Web (in System.Web.dll)

System.Object
  System.Web.Compilation.ResourceProviderFactory

public abstract class ResourceProviderFactory

NameDescription
System_CAPS_protmethodResourceProviderFactory()

When implemented in a derived class, initializes a new instance of the derived class.

NameDescription
System_CAPS_pubmethodCreateGlobalResourceProvider(String)

When overridden in a derived class, creates a global resource provider.

System_CAPS_pubmethodCreateLocalResourceProvider(String)

When overridden in a derived class, creates a local resource provider.

System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

ResourceProviderFactory is an abstract class that serves as the base class for objects that return global and local resource providers. Classes must derive from ResourceProviderFactory to implement its functionality.

The following code example shows a customized resource provider factory that retrieves cached values.

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

.NET Framework
Available since 2.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show:
© 2016 Microsoft