Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / FolderLevelBuildProviderCollection.cs / 1305376 / FolderLevelBuildProviderCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Web.Compilation;
// class CompilationSection
[ConfigurationCollection(typeof(FolderLevelBuildProvider))]
public sealed class FolderLevelBuildProviderCollection : ConfigurationElementCollection {
private static ConfigurationPropertyCollection _properties;
private Dictionary> _buildProviderMappings;
private HashSet _buildProviderTypes;
private bool _folderLevelBuildProviderTypesSet;
static FolderLevelBuildProviderCollection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
}
public FolderLevelBuildProviderCollection()
: base(StringComparer.OrdinalIgnoreCase) {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
public new BuildProvider this[string name] {
get {
return (BuildProvider)BaseGet(name);
}
}
public FolderLevelBuildProvider this[int index] {
get {
return (FolderLevelBuildProvider)BaseGet(index);
}
set {
if (BaseGet(index) != null)
BaseRemoveAt(index);
BaseAdd(index, value);
}
}
public void Add(FolderLevelBuildProvider buildProvider) {
BaseAdd(buildProvider);
}
public void Remove(String name) {
BaseRemove(name);
}
public void RemoveAt(int index) {
BaseRemoveAt(index);
}
public void Clear() {
BaseClear();
}
protected override ConfigurationElement CreateNewElement() {
return new FolderLevelBuildProvider();
}
protected override Object GetElementKey(ConfigurationElement element) {
return ((FolderLevelBuildProvider)element).Name;
}
// Add a mapping from appliesTo to the buildProviderType
private void AddMapping(FolderLevelBuildProviderAppliesTo appliesTo, Type buildProviderType) {
if (_buildProviderMappings == null) {
_buildProviderMappings = new Dictionary>();
}
if (_buildProviderTypes == null) {
_buildProviderTypes = new HashSet();
}
List buildProviders = null;
if (!_buildProviderMappings.TryGetValue(appliesTo, out buildProviders)) {
buildProviders = new List();
_buildProviderMappings.Add(appliesTo, buildProviders);
}
buildProviders.Add(buildProviderType);
_buildProviderTypes.Add(buildProviderType);
}
internal List GetBuildProviderTypes(FolderLevelBuildProviderAppliesTo appliesTo) {
EnsureFolderLevelBuildProvidersInitialized();
var buildProviders = new List();
if (_buildProviderMappings != null) {
foreach (var pair in _buildProviderMappings) {
if ((pair.Key & appliesTo) != 0) {
buildProviders.AddRange(pair.Value);
}
}
}
return buildProviders;
}
internal bool IsFolderLevelBuildProvider(Type t) {
EnsureFolderLevelBuildProvidersInitialized();
if (_buildProviderTypes != null) {
return _buildProviderTypes.Contains(t);
}
return false;
}
// Initialize the dictionary mapping appliesTo to buildProvider types
private void EnsureFolderLevelBuildProvidersInitialized() {
if (!_folderLevelBuildProviderTypesSet) {
lock (this) {
if (!_folderLevelBuildProviderTypesSet) {
foreach (FolderLevelBuildProvider buildProvider in this) {
AddMapping(buildProvider.AppliesToInternal, buildProvider.TypeInternal);
}
_folderLevelBuildProviderTypesSet = true;
}
}
}
}
}
}
// 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
- AssemblyNameUtility.cs
- Tuple.cs
- SiteMapNodeCollection.cs
- Activator.cs
- RepeaterItem.cs
- ServiceDescriptions.cs
- FullTextBreakpoint.cs
- DataGrid.cs
- CursorInteropHelper.cs
- SqlAliasesReferenced.cs
- PointCollectionConverter.cs
- SecureStringHasher.cs
- InvalidCastException.cs
- SelectingProviderEventArgs.cs
- InstanceData.cs
- UnsafeNativeMethods.cs
- WebPartsPersonalization.cs
- ProfileInfo.cs
- DBConnection.cs
- Expressions.cs
- AdCreatedEventArgs.cs
- StringStorage.cs
- CompositeScriptReference.cs
- ShapingWorkspace.cs
- ListDictionaryInternal.cs
- ExtenderControl.cs
- WebBrowsableAttribute.cs
- DesignerSerializationVisibilityAttribute.cs
- ZipIOBlockManager.cs
- StringConcat.cs
- CodeDOMUtility.cs
- XamlToRtfWriter.cs
- DataBindingList.cs
- DataRowCollection.cs
- VisualStyleInformation.cs
- CellQuery.cs
- StringValueSerializer.cs
- SessionState.cs
- RowUpdatingEventArgs.cs
- EntityDataSourceViewSchema.cs
- SafeLibraryHandle.cs
- DrawingContextWalker.cs
- BatchWriter.cs
- _Rfc2616CacheValidators.cs
- XmlDataProvider.cs
- QueryableDataSourceView.cs
- ReferenceSchema.cs
- ToolStripGrip.cs
- TimeSpanSecondsConverter.cs
- TextInfo.cs
- DocumentSequenceHighlightLayer.cs
- MetadataProperty.cs
- securitycriticaldataformultiplegetandset.cs
- DbConnectionPoolOptions.cs
- PrintEvent.cs
- ProfileProvider.cs
- FrameworkTextComposition.cs
- IisTraceListener.cs
- Debug.cs
- TemplateControlCodeDomTreeGenerator.cs
- sqlmetadatafactory.cs
- IApplicationTrustManager.cs
- DrawingContext.cs
- ToolStripSystemRenderer.cs
- ObjectItemLoadingSessionData.cs
- TextEditor.cs
- Membership.cs
- TypedElement.cs
- PnrpPermission.cs
- DataGridViewColumnCollectionDialog.cs
- SerializationObjectManager.cs
- Msmq4SubqueuePoisonHandler.cs
- AccessibleObject.cs
- SoapIgnoreAttribute.cs
- NavigationPropertyEmitter.cs
- UnsafeNativeMethods.cs
- RuleElement.cs
- WindowShowOrOpenTracker.cs
- AuthenticatedStream.cs
- DelegateSerializationHolder.cs
- MulticastIPAddressInformationCollection.cs
- OleTxTransactionInfo.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- RichTextBox.cs
- URL.cs
- XmlSchemaComplexContent.cs
- Wizard.cs
- HtmlPhoneCallAdapter.cs
- StandardBindingImporter.cs
- SHA1CryptoServiceProvider.cs
- StringUtil.cs
- XmlNamedNodeMap.cs
- DataSourceView.cs
- VectorValueSerializer.cs
- TileModeValidation.cs
- DynamicValueConverter.cs
- ParagraphVisual.cs
- DurableOperationAttribute.cs
- MSAAEventDispatcher.cs
- WebPartEditorOkVerb.cs