Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / xsp / System / Web / Extensions / ui / ScriptResourceInfo.cs / 3 / ScriptResourceInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Reflection; using System.Text; using System.Web.Resources; using System.Web.Util; internal class ScriptResourceInfo { private string _contentType; private bool _performSubstitution; private string _scriptName; private string _scriptResourceName; private string _typeName; private bool _isDebug; private static readonly IDictionary _scriptCache = Hashtable.Synchronized(new Hashtable()); private static readonly IDictionary _duplicateScriptAttributesChecked = Hashtable.Synchronized(new Hashtable()); public static readonly ScriptResourceInfo Empty = new ScriptResourceInfo(); private ScriptResourceInfo() { } public ScriptResourceInfo(ScriptResourceAttribute attr) : this() { _scriptName = attr.ScriptName; _scriptResourceName = attr.ScriptResourceName; _typeName = attr.TypeName; } public string ContentType { get { return _contentType; } set { _contentType = value; } } public bool IsDebug { get { return _isDebug; } set { _isDebug = value; } } public bool PerformSubstitution { get { return _performSubstitution; } set { _performSubstitution = value; } } public string ScriptName { get { return _scriptName; } set { _scriptName = value; } } public string ScriptResourceName { get { return _scriptResourceName; } } public string TypeName { get { return _typeName; } } public static ScriptResourceInfo GetInstance(Assembly assembly, string resourceName) { // The first time this API is called, check for attributes that point to the same script if (!_duplicateScriptAttributesChecked.Contains(assembly)) { Dictionaryscripts = new Dictionary (); foreach (ScriptResourceAttribute attr in assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false)) { string scriptName = attr.ScriptName; if (scripts.ContainsKey(scriptName)) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, AtlasWeb.ScriptResourceHandler_DuplicateScriptResources, scriptName, assembly.GetName())); } scripts.Add(scriptName, true); } _duplicateScriptAttributesChecked[assembly] = true; } Pair cacheKey = new Pair (assembly, resourceName); ScriptResourceInfo resourceInfo = (ScriptResourceInfo)_scriptCache[cacheKey]; if (resourceInfo == null) { resourceInfo = ScriptResourceInfo.Empty; object[] attrs = assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false); // First look for a script resource attribute with that name for (int i = 0; i < attrs.Length; i++) { ScriptResourceAttribute sra = (ScriptResourceAttribute)attrs[i]; if (String.Equals(sra.ScriptName, resourceName, StringComparison.Ordinal)) { resourceInfo = new ScriptResourceInfo(sra); break; } } // Look for a web resource with that name, to get additional info if any attrs = assembly.GetCustomAttributes(typeof(WebResourceAttribute), false); for (int i = 0; i < attrs.Length; i++) { WebResourceAttribute wra = (WebResourceAttribute)attrs[i]; if (String.Equals(wra.WebResource, resourceName, StringComparison.Ordinal)) { if (resourceInfo == ScriptResourceInfo.Empty) { resourceInfo = new ScriptResourceInfo(); resourceInfo.ScriptName = resourceName; } resourceInfo.ContentType = wra.ContentType; resourceInfo.PerformSubstitution = wra.PerformSubstitution; break; } } resourceInfo.IsDebug = resourceName.EndsWith(".debug.js", StringComparison.OrdinalIgnoreCase); // Cache the results so we don't have to do this again _scriptCache[cacheKey] = resourceInfo; } return resourceInfo; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Reflection; using System.Text; using System.Web.Resources; using System.Web.Util; internal class ScriptResourceInfo { private string _contentType; private bool _performSubstitution; private string _scriptName; private string _scriptResourceName; private string _typeName; private bool _isDebug; private static readonly IDictionary _scriptCache = Hashtable.Synchronized(new Hashtable()); private static readonly IDictionary _duplicateScriptAttributesChecked = Hashtable.Synchronized(new Hashtable()); public static readonly ScriptResourceInfo Empty = new ScriptResourceInfo(); private ScriptResourceInfo() { } public ScriptResourceInfo(ScriptResourceAttribute attr) : this() { _scriptName = attr.ScriptName; _scriptResourceName = attr.ScriptResourceName; _typeName = attr.TypeName; } public string ContentType { get { return _contentType; } set { _contentType = value; } } public bool IsDebug { get { return _isDebug; } set { _isDebug = value; } } public bool PerformSubstitution { get { return _performSubstitution; } set { _performSubstitution = value; } } public string ScriptName { get { return _scriptName; } set { _scriptName = value; } } public string ScriptResourceName { get { return _scriptResourceName; } } public string TypeName { get { return _typeName; } } public static ScriptResourceInfo GetInstance(Assembly assembly, string resourceName) { // The first time this API is called, check for attributes that point to the same script if (!_duplicateScriptAttributesChecked.Contains(assembly)) { Dictionaryscripts = new Dictionary (); foreach (ScriptResourceAttribute attr in assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false)) { string scriptName = attr.ScriptName; if (scripts.ContainsKey(scriptName)) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, AtlasWeb.ScriptResourceHandler_DuplicateScriptResources, scriptName, assembly.GetName())); } scripts.Add(scriptName, true); } _duplicateScriptAttributesChecked[assembly] = true; } Pair cacheKey = new Pair (assembly, resourceName); ScriptResourceInfo resourceInfo = (ScriptResourceInfo)_scriptCache[cacheKey]; if (resourceInfo == null) { resourceInfo = ScriptResourceInfo.Empty; object[] attrs = assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false); // First look for a script resource attribute with that name for (int i = 0; i < attrs.Length; i++) { ScriptResourceAttribute sra = (ScriptResourceAttribute)attrs[i]; if (String.Equals(sra.ScriptName, resourceName, StringComparison.Ordinal)) { resourceInfo = new ScriptResourceInfo(sra); break; } } // Look for a web resource with that name, to get additional info if any attrs = assembly.GetCustomAttributes(typeof(WebResourceAttribute), false); for (int i = 0; i < attrs.Length; i++) { WebResourceAttribute wra = (WebResourceAttribute)attrs[i]; if (String.Equals(wra.WebResource, resourceName, StringComparison.Ordinal)) { if (resourceInfo == ScriptResourceInfo.Empty) { resourceInfo = new ScriptResourceInfo(); resourceInfo.ScriptName = resourceName; } resourceInfo.ContentType = wra.ContentType; resourceInfo.PerformSubstitution = wra.PerformSubstitution; break; } } resourceInfo.IsDebug = resourceName.EndsWith(".debug.js", StringComparison.OrdinalIgnoreCase); // Cache the results so we don't have to do this again _scriptCache[cacheKey] = resourceInfo; } return resourceInfo; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- cookiecollection.cs
- BrowserCapabilitiesCodeGenerator.cs
- XomlDesignerLoader.cs
- PaginationProgressEventArgs.cs
- WindowsFont.cs
- ListItemCollection.cs
- PointKeyFrameCollection.cs
- Deserializer.cs
- LinqDataSourceStatusEventArgs.cs
- List.cs
- TrustLevel.cs
- RuntimeHelpers.cs
- XPathNavigatorReader.cs
- input.cs
- DynamicMetaObjectBinder.cs
- X500Name.cs
- _ChunkParse.cs
- SafeNativeMethods.cs
- TrackingAnnotationCollection.cs
- PixelShader.cs
- FigureHelper.cs
- DocumentGridContextMenu.cs
- MetafileHeaderWmf.cs
- SynchronousReceiveBehavior.cs
- CloseCryptoHandleRequest.cs
- SplayTreeNode.cs
- DbQueryCommandTree.cs
- XmlSchemaProviderAttribute.cs
- Utils.cs
- ColumnHeader.cs
- XmlDocumentFieldSchema.cs
- WorkflowDebuggerSteppingAttribute.cs
- D3DImage.cs
- QilGenerator.cs
- HtmlElementErrorEventArgs.cs
- AdRotator.cs
- EventToken.cs
- DoubleConverter.cs
- ClientRuntimeConfig.cs
- EntityKeyElement.cs
- DBNull.cs
- DispatcherOperation.cs
- PartialCachingControl.cs
- HMACMD5.cs
- SoapFault.cs
- ToolStripPanelRenderEventArgs.cs
- EntityDataSourceReferenceGroup.cs
- safelink.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- MemberDescriptor.cs
- ConversionContext.cs
- CompilerScope.cs
- ConfigurationLocation.cs
- ServiceDescriptionContext.cs
- SqlDataSourceSelectingEventArgs.cs
- ControlTemplate.cs
- PackageFilter.cs
- WorkflowInvoker.cs
- PackageDigitalSignature.cs
- ADConnectionHelper.cs
- XmlNavigatorFilter.cs
- AnnotationStore.cs
- DefaultCommandExtensionCallback.cs
- DataGridCaption.cs
- ConstraintEnumerator.cs
- PromptBuilder.cs
- PointHitTestResult.cs
- Model3D.cs
- ValueUtilsSmi.cs
- TextTreePropertyUndoUnit.cs
- FormViewDeleteEventArgs.cs
- RegexMatch.cs
- SqlGatherProducedAliases.cs
- SolidColorBrush.cs
- CompilationSection.cs
- DefaultProxySection.cs
- ItemCheckEvent.cs
- ToolStripDropDownButton.cs
- _CacheStreams.cs
- WhereaboutsReader.cs
- PropertyReference.cs
- LineVisual.cs
- PersonalizationProviderCollection.cs
- ServiceDescriptionSerializer.cs
- Adorner.cs
- PersonalizationAdministration.cs
- XmlEventCache.cs
- ImageInfo.cs
- MergeFailedEvent.cs
- ViewValidator.cs
- MimeBasePart.cs
- PointKeyFrameCollection.cs
- mediaeventshelper.cs
- PersonalizationProviderCollection.cs
- WindowsAltTab.cs
- DBNull.cs
- HttpCookiesSection.cs
- UserControlCodeDomTreeGenerator.cs
- ConstrainedDataObject.cs
- FileDialogCustomPlace.cs