Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / xsp / System / Web / Extensions / ui / ScriptResourceInfo.cs / 1 / 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)) {
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.
//
//-----------------------------------------------------------------------------
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)) {
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataKeyCollection.cs
- SmtpFailedRecipientException.cs
- ImageList.cs
- MessageSmuggler.cs
- ListViewGroup.cs
- TextSelectionHelper.cs
- FragmentQueryProcessor.cs
- _AutoWebProxyScriptHelper.cs
- BrowserDefinition.cs
- ZoneMembershipCondition.cs
- XmlSchemaSet.cs
- ScriptingRoleServiceSection.cs
- JsonClassDataContract.cs
- CategoryState.cs
- Geometry3D.cs
- PriorityQueue.cs
- DictionaryBase.cs
- CultureInfo.cs
- SchemaHelper.cs
- StylusTip.cs
- MD5.cs
- WebPartUserCapability.cs
- PageThemeCodeDomTreeGenerator.cs
- TreeViewAutomationPeer.cs
- MapPathBasedVirtualPathProvider.cs
- FunctionQuery.cs
- DropSourceBehavior.cs
- StatusStrip.cs
- Unit.cs
- DataGridViewSelectedColumnCollection.cs
- RelationshipManager.cs
- PowerModeChangedEventArgs.cs
- FrameworkContentElementAutomationPeer.cs
- FormsIdentity.cs
- OutputCacheEntry.cs
- CachedFontFace.cs
- TypeReference.cs
- ValidatorCollection.cs
- BridgeDataReader.cs
- SoapAttributeAttribute.cs
- CodeExporter.cs
- CommandManager.cs
- SplineQuaternionKeyFrame.cs
- DragDeltaEventArgs.cs
- SecurityHeaderTokenResolver.cs
- contentDescriptor.cs
- GrammarBuilderPhrase.cs
- EditorZoneBase.cs
- NativeBuffer.cs
- XsltArgumentList.cs
- InstancePersistenceEvent.cs
- UTF7Encoding.cs
- GridViewCancelEditEventArgs.cs
- Point3DCollection.cs
- Stylesheet.cs
- CodeChecksumPragma.cs
- NotifyCollectionChangedEventArgs.cs
- XmlName.cs
- PowerModeChangedEventArgs.cs
- WebServicesSection.cs
- PipeStream.cs
- ChangePasswordDesigner.cs
- AssemblyAttributes.cs
- PeerInvitationResponse.cs
- InkCanvasInnerCanvas.cs
- EditorZoneDesigner.cs
- ProfessionalColorTable.cs
- IChannel.cs
- OdbcConnection.cs
- ContactManager.cs
- CustomSignedXml.cs
- DPCustomTypeDescriptor.cs
- DrawingVisualDrawingContext.cs
- QueryOutputWriter.cs
- Span.cs
- MailBnfHelper.cs
- ContextMenuStrip.cs
- MatrixAnimationBase.cs
- ExceptionUtil.cs
- SqlConnectionPoolProviderInfo.cs
- TypeBuilderInstantiation.cs
- Frame.cs
- DataGridViewComboBoxCell.cs
- ScriptIgnoreAttribute.cs
- WindowsFormsLinkLabel.cs
- FigureParagraph.cs
- HiddenFieldPageStatePersister.cs
- XmlAttribute.cs
- VariantWrapper.cs
- NavigatingCancelEventArgs.cs
- InstalledFontCollection.cs
- KeyFrames.cs
- ValidationResult.cs
- GenerateHelper.cs
- xmlglyphRunInfo.cs
- GridViewRow.cs
- SoapEnumAttribute.cs
- TransportChannelListener.cs
- DisplayInformation.cs
- RemotingServices.cs