Code:
/ DotNET / DotNET / 8.0 / untmp / Orcas / RTM / ndp / fx / src / xsp / System / Web / Extensions / ui / ScriptResourceInfo.cs / 2 / 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();
public ScriptResourceInfo() {
_contentType = "application/x-javascript";
}
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)) {
Dictionary scripts = 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlBooleanMismatchVisitor.cs
- TextAnchor.cs
- Deserializer.cs
- DBSqlParserTableCollection.cs
- DetailsViewDeleteEventArgs.cs
- ExceptionTranslationTable.cs
- Model3DCollection.cs
- DrawToolTipEventArgs.cs
- XmlSchemaSubstitutionGroup.cs
- FrameworkElementAutomationPeer.cs
- ChannelDemuxer.cs
- ListViewInsertEventArgs.cs
- LabelLiteral.cs
- Light.cs
- basemetadatamappingvisitor.cs
- MediaElementAutomationPeer.cs
- DbCommandTree.cs
- Event.cs
- OperatingSystem.cs
- AccessDataSource.cs
- WorkflowInstanceExtensionManager.cs
- EventDrivenDesigner.cs
- HttpsTransportElement.cs
- KeyBinding.cs
- TextUtf8RawTextWriter.cs
- DesignTimeVisibleAttribute.cs
- CodeDelegateInvokeExpression.cs
- BaseWebProxyFinder.cs
- DCSafeHandle.cs
- LookupBindingPropertiesAttribute.cs
- filewebresponse.cs
- IsolatedStoragePermission.cs
- ConvertEvent.cs
- PersonalizationState.cs
- ExpressionPrefixAttribute.cs
- StringPropertyBuilder.cs
- XmlDigitalSignatureProcessor.cs
- ColumnWidthChangingEvent.cs
- QueryOperator.cs
- mactripleDES.cs
- SaveCardRequest.cs
- Vector3DValueSerializer.cs
- NativeMethods.cs
- FontFaceLayoutInfo.cs
- EmptyControlCollection.cs
- TimeSpan.cs
- HttpRequestCacheValidator.cs
- AutomationElementIdentifiers.cs
- View.cs
- ZipIOLocalFileDataDescriptor.cs
- BindToObject.cs
- RuleSettingsCollection.cs
- DataGridViewBand.cs
- CodeDomLocalizationProvider.cs
- XPathAxisIterator.cs
- ReferentialConstraint.cs
- DependencyObject.cs
- WinFormsSpinner.cs
- BrowserCapabilitiesCompiler.cs
- Thumb.cs
- XXXInfos.cs
- DataGridColumnHeaderCollection.cs
- DetailsViewDeleteEventArgs.cs
- TimeStampChecker.cs
- BadImageFormatException.cs
- Utils.cs
- ListItemCollection.cs
- Viewport3DVisual.cs
- ContainerVisual.cs
- ExpressionStringBuilder.cs
- ConfigurationSettings.cs
- AdRotator.cs
- Int32CollectionValueSerializer.cs
- CalendarAutoFormatDialog.cs
- CapabilitiesUse.cs
- SymmetricSecurityProtocol.cs
- NetworkInformationPermission.cs
- Activity.cs
- TemplateColumn.cs
- ExpandSegment.cs
- _SslState.cs
- ComPlusThreadInitializer.cs
- DefaultSerializationProviderAttribute.cs
- QuotedPrintableStream.cs
- ImplicitInputBrush.cs
- ReachDocumentReferenceSerializer.cs
- URI.cs
- SystemDropShadowChrome.cs
- DependencyPropertyKind.cs
- CodeSubDirectory.cs
- ValidatingReaderNodeData.cs
- MethodCallTranslator.cs
- TrustLevelCollection.cs
- MailBnfHelper.cs
- SamlAuthenticationStatement.cs
- DataServiceQueryProvider.cs
- InputLangChangeEvent.cs
- Converter.cs
- MenuItemCollection.cs
- PropertyPathConverter.cs