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
- DocumentXmlWriter.cs
- EntityDataSourceContextCreatedEventArgs.cs
- GradientStop.cs
- TextDecoration.cs
- WebPageTraceListener.cs
- IteratorFilter.cs
- DbQueryCommandTree.cs
- ListenerConfig.cs
- CodeParameterDeclarationExpression.cs
- FlowPosition.cs
- MsmqDecodeHelper.cs
- LayoutEditorPart.cs
- XNodeNavigator.cs
- AccessKeyManager.cs
- documentsequencetextcontainer.cs
- ObjectReaderCompiler.cs
- EntityDataSourceContextCreatingEventArgs.cs
- odbcmetadatafactory.cs
- AddInSegmentDirectoryNotFoundException.cs
- EndpointDiscoveryMetadata.cs
- InvalidCommandTreeException.cs
- FormViewInsertEventArgs.cs
- DependencyStoreSurrogate.cs
- UrlMappingsSection.cs
- CryptoApi.cs
- ItemCollection.cs
- Convert.cs
- UriSection.cs
- SecurityContextSecurityTokenParameters.cs
- DataRowComparer.cs
- DbCommandTree.cs
- DiscoveryViaBehavior.cs
- X509RecipientCertificateServiceElement.cs
- DesignerDataSourceView.cs
- MemberProjectionIndex.cs
- RequestQueue.cs
- TrackBar.cs
- ConstraintStruct.cs
- ConstraintStruct.cs
- Variable.cs
- WindowsScroll.cs
- ContentPropertyAttribute.cs
- ReflectionUtil.cs
- DetailsViewDeletedEventArgs.cs
- PcmConverter.cs
- StateValidator.cs
- HttpChannelBindingToken.cs
- MaterializeFromAtom.cs
- TreeNodeStyleCollection.cs
- JapaneseLunisolarCalendar.cs
- ImageFormatConverter.cs
- XmlUtil.cs
- EndEvent.cs
- DataSourceHelper.cs
- LogWriteRestartAreaAsyncResult.cs
- remotingproxy.cs
- WorkflowWebHostingModule.cs
- WorkflowApplicationCompletedEventArgs.cs
- OleDbFactory.cs
- SqlUtils.cs
- Scripts.cs
- DataViewManagerListItemTypeDescriptor.cs
- IdentityModelStringsVersion1.cs
- FormatStringEditor.cs
- CorrelationTokenTypeConvertor.cs
- FolderBrowserDialog.cs
- Keywords.cs
- GeneralTransformGroup.cs
- TraceSwitch.cs
- WebPartManager.cs
- BCLDebug.cs
- DbgUtil.cs
- ToolStripTextBox.cs
- SqlProvider.cs
- ParseElement.cs
- QilTernary.cs
- Queue.cs
- ValidationVisibilityAttribute.cs
- DES.cs
- ValueSerializer.cs
- WindowsAuthenticationModule.cs
- UrlAuthorizationModule.cs
- Events.cs
- ColumnPropertiesGroup.cs
- DataSysAttribute.cs
- _NTAuthentication.cs
- Activity.cs
- XmlSchemaProviderAttribute.cs
- ValidationRule.cs
- CodeObjectCreateExpression.cs
- linebase.cs
- GridViewColumnCollection.cs
- XmlDocumentType.cs
- SynchronizedInputHelper.cs
- InputDevice.cs
- EntitySqlException.cs
- InternalRelationshipCollection.cs
- MorphHelpers.cs
- SqlDataRecord.cs
- SectionUpdates.cs