Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Compilation / IResourceProvider.cs / 1 / IResourceProvider.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Collections; using System.Collections.Specialized; using System.Reflection; using System.IO; using System.Security.Permissions; using System.CodeDom; using System.Globalization; using System.Resources; using System.Web.Compilation; using System.Web.Util; using System.Web.UI; /* [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] * Basic interface to access and enumerate resources */ [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public interface IResourceProvider { /* * Retrieve a resource object for the passed in key and culture */ object GetObject(string resourceKey, CultureInfo culture); /* * Returns a reader that enumerates all the neutral resources for this provider */ IResourceReader ResourceReader { get; } } /* * Base class for resource providers based on a standard ResourceManager */ internal abstract class BaseResXResourceProvider: IResourceProvider { private ResourceManager _resourceManager; ///// IResourceProvider implementation public virtual object GetObject(string resourceKey, CultureInfo culture) { // Attempt to get the resource manager EnsureResourceManager(); // If we couldn't get a resource manager, return null if (_resourceManager == null) return null; if (culture == null) culture = CultureInfo.CurrentUICulture; return _resourceManager.GetObject(resourceKey, culture); } public virtual IResourceReader ResourceReader { get { return null; } } ///// End of IResourceProvider implementation protected abstract ResourceManager CreateResourceManager(); private void EnsureResourceManager() { if (_resourceManager != null) return; _resourceManager = CreateResourceManager(); } } /* * ResourceManager based provider for application resources. */ internal class GlobalResXResourceProvider : BaseResXResourceProvider { private string _classKey; internal GlobalResXResourceProvider(string classKey) { _classKey = classKey; } protected override ResourceManager CreateResourceManager() { string fullClassName = BaseResourcesBuildProvider.DefaultResourcesNamespace + "." + _classKey; // If there is no app resource assembly, return null if (BuildManager.AppResourcesAssembly == null) return null; ResourceManager resourceManager = new ResourceManager(fullClassName, BuildManager.AppResourcesAssembly); resourceManager.IgnoreCase = true; return resourceManager; } public override IResourceReader ResourceReader { get { // App resources don't support implicit resources, so the IResourceReader // should never be needed throw new NotSupportedException(); } } } /* * ResourceManager based provider for page (local) resources. */ internal class LocalResXResourceProvider : BaseResXResourceProvider { private VirtualPath _virtualPath; internal LocalResXResourceProvider(VirtualPath virtualPath) { _virtualPath = virtualPath; } protected override ResourceManager CreateResourceManager() { ResourceManager resourceManager = null; Assembly pageResAssembly = GetLocalResourceAssembly(); if (pageResAssembly != null) { string fileName = _virtualPath.FileName; resourceManager = new ResourceManager(fileName, pageResAssembly); resourceManager.IgnoreCase = true; } else { throw new InvalidOperationException(SR.GetString(SR.ResourceExpresionBuilder_PageResourceNotFound)); } return resourceManager; } public override IResourceReader ResourceReader { get { // Get the local resource assembly for this page Assembly pageResAssembly = GetLocalResourceAssembly(); if (pageResAssembly == null) return null; // Get the name of the embedded .resource file for this page string resourceFileName = _virtualPath.FileName + ".resources"; // Make it lower case, since GetManifestResourceStream is case sensitive resourceFileName = resourceFileName.ToLower(CultureInfo.InvariantCulture); // Get the resource stream from the resource assembly Stream resourceStream = pageResAssembly.GetManifestResourceStream(resourceFileName); // If this page has no resources, return null if (resourceStream == null) return null; return new ResourceReader(resourceStream); } } // Need to Assert here in order to access the codegen dir (VSWhidbey 387312) [PermissionSet(SecurityAction.Assert, Unrestricted=true)] private Assembly GetLocalResourceAssembly() { // Remove the page file name to get its directory VirtualPath virtualDir = _virtualPath.Parent; // Get the name of the local resource assembly string cacheKey = BuildManager.GetLocalResourcesAssemblyName(virtualDir); BuildResult result = BuildManager.GetBuildResultFromCache(cacheKey); if (result != null) { return ((BuildResultCompiledAssembly)result).ResultAssembly; } return null; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MatrixKeyFrameCollection.cs
- GeneralTransform.cs
- RolePrincipal.cs
- ServicePointManager.cs
- PeerPresenceInfo.cs
- SqlReferenceCollection.cs
- ApplicationGesture.cs
- ToolStripManager.cs
- Vector3DValueSerializer.cs
- ButtonStandardAdapter.cs
- ApplicationServicesHostFactory.cs
- VirtualDirectoryMapping.cs
- GuidConverter.cs
- DataGridViewRowHeaderCell.cs
- AndCondition.cs
- Point4D.cs
- QueryOptionExpression.cs
- ReceiveContent.cs
- ProfilePropertySettingsCollection.cs
- Int32Storage.cs
- ReadOnlyHierarchicalDataSourceView.cs
- XmlSerializationWriter.cs
- ParameterCollectionEditorForm.cs
- StickyNoteContentControl.cs
- WebBrowserBase.cs
- DataListItemCollection.cs
- ProgressBar.cs
- MetabaseServerConfig.cs
- RemoteX509Token.cs
- BitmapVisualManager.cs
- KnownIds.cs
- SizeAnimationUsingKeyFrames.cs
- Pen.cs
- PageThemeBuildProvider.cs
- TrackingValidationObjectDictionary.cs
- AddInAttribute.cs
- Control.cs
- HierarchicalDataTemplate.cs
- SByteConverter.cs
- SpinLock.cs
- MediaElementAutomationPeer.cs
- BindingBase.cs
- EventManager.cs
- StaticDataManager.cs
- DataServiceRequestException.cs
- SystemGatewayIPAddressInformation.cs
- ActionMismatchAddressingException.cs
- Wrapper.cs
- Pkcs7Recipient.cs
- LinkButton.cs
- DesignerActionService.cs
- XmlNullResolver.cs
- SqlUtils.cs
- HttpFileCollection.cs
- DeflateEmulationStream.cs
- ValidationResult.cs
- Missing.cs
- AttributeAction.cs
- clipboard.cs
- ValueCollectionParameterReader.cs
- SecurityUtils.cs
- BezierSegment.cs
- RadioButtonStandardAdapter.cs
- PrintPreviewGraphics.cs
- FlowNode.cs
- HitTestWithGeometryDrawingContextWalker.cs
- UndoManager.cs
- BamlRecordHelper.cs
- Connection.cs
- IISUnsafeMethods.cs
- HtmlInputRadioButton.cs
- XmlSignificantWhitespace.cs
- XmlQualifiedNameTest.cs
- PLINQETWProvider.cs
- Scene3D.cs
- XmlSchemaGroup.cs
- EntityType.cs
- Timer.cs
- SecurityContextCookieSerializer.cs
- RadioButtonBaseAdapter.cs
- XPathAncestorQuery.cs
- SafeCloseHandleCritical.cs
- ThicknessAnimationUsingKeyFrames.cs
- ComplexLine.cs
- ObjectView.cs
- ScriptDescriptor.cs
- AudioFormatConverter.cs
- oledbconnectionstring.cs
- CopyNamespacesAction.cs
- ChangePassword.cs
- TreeBuilder.cs
- SafeCancelMibChangeNotify.cs
- MsmqAuthenticationMode.cs
- DoubleStorage.cs
- AttributedMetaModel.cs
- ChangeConflicts.cs
- PriorityItem.cs
- RangeValueProviderWrapper.cs
- QilInvokeLateBound.cs
- autovalidator.cs