Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / AssemblyCache.cs / 1305376 / AssemblyCache.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Reflection;
using System.Web.Configuration;
using System.Web.Script;
// Caches Assembly APIs to improve performance
internal static class AssemblyCache {
// PERF: Cache reference to System.Web.Extensions assembly. Use ScriptManager since it's guaranteed to be in S.W.E
public static readonly Assembly SystemWebExtensions = typeof(ScriptManager).Assembly;
public static readonly Assembly SystemWeb = typeof(Page).Assembly;
private static CompilationSection _compilationSection;
internal static bool _useCompilationSection = true;
// Maps string (assembly name) to Assembly
private static readonly Hashtable _assemblyCache = Hashtable.Synchronized(new Hashtable());
// Maps assembly to Version
// internal so it can be manipulated by the unit test suite
internal static readonly Hashtable _versionCache = Hashtable.Synchronized(new Hashtable());
// Maps an assembly to its ajax framework assembly attribute. If it doesn't have one, it maps it to a null value
private static readonly ConcurrentDictionary _ajaxAssemblyAttributeCache =
new ConcurrentDictionary();
private static CompilationSection CompilationSection {
get {
if (_compilationSection == null) {
_compilationSection = RuntimeConfig.GetAppConfig().Compilation;
}
return _compilationSection;
}
}
public static Version GetVersion(Assembly assembly) {
Debug.Assert(assembly != null);
Version version = (Version)_versionCache[assembly];
if (version == null) {
// use new AssemblyName() instead of assembly.GetName() so it works in medium trust
version = new AssemblyName(assembly.FullName).Version;
_versionCache[assembly] = version;
}
return version;
}
public static Assembly Load(string assemblyName) {
Debug.Assert(!String.IsNullOrEmpty(assemblyName));
Assembly assembly = (Assembly)_assemblyCache[assemblyName];
if (assembly == null) {
// _useCompilationSection must be set to false in a unit test environment since there
// is no http runtime, and therefore no trust level is set.
if (_useCompilationSection) {
assembly = CompilationSection.LoadAssembly(assemblyName, true);
}
else {
assembly = Assembly.Load(assemblyName);
}
_assemblyCache[assemblyName] = assembly;
}
return assembly;
}
public static bool IsAjaxFrameworkAssembly(Assembly assembly) {
return (GetAjaxFrameworkAssemblyAttribute(assembly) != null);
}
public static AjaxFrameworkAssemblyAttribute GetAjaxFrameworkAssemblyAttribute(Assembly assembly) {
Debug.Assert(assembly != null);
AjaxFrameworkAssemblyAttribute ajaxFrameworkAssemblyAttribute = null;
if (!_ajaxAssemblyAttributeCache.TryGetValue(assembly, out ajaxFrameworkAssemblyAttribute)) {
foreach (Attribute attribute in assembly.GetCustomAttributes(false)) {
if (attribute is AjaxFrameworkAssemblyAttribute) {
ajaxFrameworkAssemblyAttribute = (AjaxFrameworkAssemblyAttribute)attribute;
break;
}
}
_ajaxAssemblyAttributeCache.TryAdd(assembly, ajaxFrameworkAssemblyAttribute);
}
return ajaxFrameworkAssemblyAttribute;
}
}
}
// 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
- MailMessageEventArgs.cs
- BinaryWriter.cs
- ObjectContextServiceProvider.cs
- WindowsListViewItem.cs
- GC.cs
- XamlNamespaceHelper.cs
- FrameworkRichTextComposition.cs
- LogWriteRestartAreaState.cs
- MessageSecurityProtocol.cs
- ServiceBusyException.cs
- TypeHelper.cs
- LicenseProviderAttribute.cs
- CacheAxisQuery.cs
- SerializationObjectManager.cs
- SliderAutomationPeer.cs
- SchemaImporter.cs
- MenuAutomationPeer.cs
- OracleDataReader.cs
- WebPartEditorApplyVerb.cs
- MethodCallExpression.cs
- PathFigureCollection.cs
- FillErrorEventArgs.cs
- RtfFormatStack.cs
- DateTimeConverter2.cs
- ResourceContainer.cs
- iisPickupDirectory.cs
- WebPart.cs
- RegexWorker.cs
- SeverityFilter.cs
- AstTree.cs
- ValidationVisibilityAttribute.cs
- AssociationSetEnd.cs
- Util.cs
- EditorServiceContext.cs
- DisplayInformation.cs
- DesignerForm.cs
- PieceDirectory.cs
- xmlglyphRunInfo.cs
- WeakReadOnlyCollection.cs
- SecurityException.cs
- ConsoleCancelEventArgs.cs
- Task.cs
- NegotiateStream.cs
- AlphaSortedEnumConverter.cs
- SplitterCancelEvent.cs
- XmlArrayAttribute.cs
- TemplatedAdorner.cs
- CompatibleComparer.cs
- WebPartDisplayModeCancelEventArgs.cs
- WindowsListViewGroupHelper.cs
- Buffer.cs
- Point3DKeyFrameCollection.cs
- EventLogPermission.cs
- XamlSerializerUtil.cs
- BindingContext.cs
- MediaSystem.cs
- ValidatorCompatibilityHelper.cs
- Cursor.cs
- NamedPipeProcessProtocolHandler.cs
- CompiledELinqQueryState.cs
- errorpatternmatcher.cs
- ArrangedElement.cs
- TdsParserSessionPool.cs
- CompositeDesignerAccessibleObject.cs
- ColorContext.cs
- WebPartVerb.cs
- SQLGuidStorage.cs
- PolicyAssertionCollection.cs
- KeysConverter.cs
- WindowsEditBoxRange.cs
- ReflectionPermission.cs
- Rect3D.cs
- XmlProcessingInstruction.cs
- WindowsFormsSynchronizationContext.cs
- PrintingPermission.cs
- Transform.cs
- AttachmentCollection.cs
- SoapFormatterSinks.cs
- ScrollEventArgs.cs
- CombinedGeometry.cs
- NoneExcludedImageIndexConverter.cs
- DrawingContextFlattener.cs
- HttpAsyncResult.cs
- ResolveMatchesMessage11.cs
- XmlDataSourceDesigner.cs
- WebServiceParameterData.cs
- PermissionSetEnumerator.cs
- Configuration.cs
- RenderOptions.cs
- RadioButtonAutomationPeer.cs
- DBConnection.cs
- DomainLiteralReader.cs
- newinstructionaction.cs
- UIntPtr.cs
- PassportPrincipal.cs
- Propagator.Evaluator.cs
- XmlLoader.cs
- ControlCollection.cs
- TreeNode.cs
- MappingException.cs