Code:
/ DotNET / DotNET / 8.0 / untmp / Orcas / RTM / ndp / fx / src / xsp / System / Web / Extensions / ui / WebResourceUtil.cs / 1 / WebResourceUtil.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Reflection; using System.Diagnostics; using System.Collections; using System.Globalization; using System.Web.UI; using System.Web.Resources; using System.Web.Util; internal static class WebResourceUtil { // Maps Pair(resourceName, assembly) to bool private static readonly Hashtable _assemblyContainsWebResourceCache = Hashtable.Synchronized(new Hashtable()); // Returns true if the assembly contains a Web resource and an embedded resource with // the sepecified name. Throws exception if assembly contains Web resource but no // embedded resource, since this is always an error. public static bool AssemblyContainsWebResource(Assembly assembly, string resourceName) { // PERF: Special-case known resources in our own assembly if (assembly == AssemblyCache.SystemWebExtensions) { return SystemWebExtensionsContainsWebResource(resourceName); } // Getting and checking the custom attributes is expensive, so we cache the result // of the lookup. Pair key = new Pair (resourceName, assembly); object assemblyContainsWebResource = _assemblyContainsWebResourceCache[key]; if (assemblyContainsWebResource == null) { assemblyContainsWebResource = false; object[] attrs = assembly.GetCustomAttributes(typeof(WebResourceAttribute), false); foreach (WebResourceAttribute attr in attrs) { // Resource names are always case-sensitive if (String.Equals(attr.WebResource, resourceName, StringComparison.Ordinal)) { if (assembly.GetManifestResourceStream(resourceName) != null) { assemblyContainsWebResource = true; break; } else { // Always an error to contain Web resource but not embedded resource. throw new InvalidOperationException(String.Format( CultureInfo.CurrentUICulture, AtlasWeb.WebResourceUtil_AssemblyDoesNotContainEmbeddedResource, assembly, resourceName)); } } } _assemblyContainsWebResourceCache[key] = assemblyContainsWebResource; } return (bool)assemblyContainsWebResource; } private static bool SystemWebExtensionsContainsWebResource(string resourceName) { // PERF: Switching over the length is more performant than switching over the string itself // or checking equality against each string. When switching over the string itself, the switch // is compiled to a lookup in a static Dictionary , which is 5-10 times slower than // switching over the length. Checking equality against each string ranges from equal performance // to 10 times slower, depending on how early a match is found. switch (resourceName.Length) { case 16: return resourceName == "MicrosoftAjax.js"; case 24: return resourceName == "MicrosoftAjaxWebForms.js"; case 21: return resourceName == "MicrosoftAjaxTimer.js"; case 22: return resourceName == "MicrosoftAjax.debug.js"; case 30: return resourceName == "MicrosoftAjaxWebForms.debug.js"; case 27: return resourceName == "MicrosoftAjaxTimer.debug.js"; default: return false; } } // Throws exception if the assembly does not contain a Web resource and an embedded resource // with the specified name. public static void VerifyAssemblyContainsReleaseWebResource(Assembly assembly, string releaseResourceName) { if (!AssemblyContainsWebResource(assembly, releaseResourceName)) { throw new InvalidOperationException(String.Format( CultureInfo.CurrentUICulture, AtlasWeb.WebResourceUtil_AssemblyDoesNotContainReleaseWebResource, assembly, releaseResourceName)); } } // Throws exception if the assembly does not contain a Web resource and an embedded resource // with the specified name. public static void VerifyAssemblyContainsDebugWebResource(Assembly assembly, string debugResourceName) { if (!AssemblyContainsWebResource(assembly, debugResourceName)) { throw new InvalidOperationException(String.Format( CultureInfo.CurrentUICulture, AtlasWeb.WebResourceUtil_AssemblyDoesNotContainDebugWebResource, assembly, debugResourceName)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GeneralTransform2DTo3DTo2D.cs
- OdbcConnection.cs
- PropertyMetadata.cs
- MemberRelationshipService.cs
- DecoderFallback.cs
- BooleanFunctions.cs
- MulticastIPAddressInformationCollection.cs
- AccessedThroughPropertyAttribute.cs
- ClientSettingsStore.cs
- TextElement.cs
- ResourceReferenceKeyNotFoundException.cs
- BinaryFormatterWriter.cs
- BaseParaClient.cs
- DebugView.cs
- Menu.cs
- ImportStoreException.cs
- CodePrimitiveExpression.cs
- _ProxyChain.cs
- InternalConfigEventArgs.cs
- ValidationErrorCollection.cs
- CryptoApi.cs
- CompleteWizardStep.cs
- RegisteredDisposeScript.cs
- CapabilitiesRule.cs
- SecurityContextSecurityTokenParameters.cs
- EventDescriptor.cs
- WebPartManager.cs
- ChannelManagerBase.cs
- MultipleCopiesCollection.cs
- SHA384Managed.cs
- TreeNodeStyleCollectionEditor.cs
- FrameworkElementFactory.cs
- ProviderBase.cs
- MessageFault.cs
- TreeViewHitTestInfo.cs
- OdbcParameterCollection.cs
- InkCanvas.cs
- IsolatedStorage.cs
- Switch.cs
- PeoplePickerWrapper.cs
- DataGridRow.cs
- ActivityAction.cs
- CommonGetThemePartSize.cs
- TablePatternIdentifiers.cs
- SafeRightsManagementQueryHandle.cs
- XmlText.cs
- UndoManager.cs
- ConfigurationStrings.cs
- CompensationExtension.cs
- XmlObjectSerializerWriteContext.cs
- EncryptedKey.cs
- ScrollData.cs
- querybuilder.cs
- DesignTimeVisibleAttribute.cs
- SerializationAttributes.cs
- FramingEncoders.cs
- DefaultSection.cs
- TextEmbeddedObject.cs
- SiteMap.cs
- FixedSchema.cs
- GridViewSortEventArgs.cs
- ExceptionCollection.cs
- GridViewDeletedEventArgs.cs
- ContentOperations.cs
- PlatformNotSupportedException.cs
- TextRange.cs
- SoapElementAttribute.cs
- AnimationStorage.cs
- TypedTableBaseExtensions.cs
- StreamSecurityUpgradeProvider.cs
- LOSFormatter.cs
- OleDbConnectionFactory.cs
- _FtpControlStream.cs
- SimplePropertyEntry.cs
- MarshalDirectiveException.cs
- unsafeIndexingFilterStream.cs
- XmlCustomFormatter.cs
- COMException.cs
- XComponentModel.cs
- XmlUtil.cs
- DataGridViewDataErrorEventArgs.cs
- ProfileSection.cs
- ToolStrip.cs
- Point4D.cs
- SqlCacheDependencySection.cs
- ReadOnlyTernaryTree.cs
- PageClientProxyGenerator.cs
- Point.cs
- MemberRelationshipService.cs
- ProtocolElement.cs
- DetailsViewUpdateEventArgs.cs
- XmlName.cs
- SetterBase.cs
- UdpReplyToBehavior.cs
- ShaderRenderModeValidation.cs
- DependencyObjectPropertyDescriptor.cs
- FormView.cs
- PeerNearMe.cs
- WebConfigurationFileMap.cs
- SystemIPAddressInformation.cs