IResourceProvider Interface
Assembly: System.Web (in system.web.dll)
A resource provider facilitates the retrieving of values from a resource file. When an expression of the form <%$ Resources: classKey, resourceKey %> is encountered during page parsing, the resource provider returns the localized value for the resource. The ResourceProviderFactory class creates instances of IResourceProvider objects for use in retrieving the values.
The following code example shows a customized resource provider factory that retrieves cached values. The resource provider factory creates an instance of a class that implements IResourceProvider.
[
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; }
}
- AspNetHostingPermission for operating in a hosted environment. Associated enumeration: Minimal
Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.