TagMapCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / TagMapCollection.cs / 2 / TagMapCollection.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.Configuration { 
    using System; 
    using System.Xml;
    using System.Configuration; 
    using System.Collections.Specialized;
    using System.Collections;
    using System.IO;
    using System.Text; 
    using System.Web.Util;
    using System.Web.UI; 
    using System.Web.Compilation; 
    using System.Threading;
    using System.Web.Configuration; 
    using System.Security.Permissions;

    [ConfigurationCollection(typeof(TagMapInfo))]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    public sealed class TagMapCollection : ConfigurationElementCollection {
        private static ConfigurationPropertyCollection _properties; 
 
        private Hashtable _tagMappings;
 
        static TagMapCollection() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection();
        } 

        public TagMapCollection() { 
        } 

        protected override ConfigurationPropertyCollection Properties { 
            get {
                return _properties;
            }
        } 

        public TagMapInfo this[int index] { 
            get { 
                return (TagMapInfo)BaseGet(index);
            } 
            set {
                if (BaseGet(index) != null) {
                    BaseRemoveAt(index);
                } 
                BaseAdd(index, value);
            } 
        } 

        public void Add(TagMapInfo tagMapInformation) { 
            BaseAdd(tagMapInformation);
        }

        public void Remove(TagMapInfo tagMapInformation) { 
            BaseRemove(GetElementKey(tagMapInformation));
        } 
 
        public void Clear() {
            BaseClear(); 
        }

        protected override ConfigurationElement CreateNewElement() {
            return new TagMapInfo(); 
        }
 
        protected override Object GetElementKey(ConfigurationElement element) { 
            return ((TagMapInfo)element).TagType;
        } 

        internal Hashtable TagTypeMappingInternal {
            get {
                if (_tagMappings == null) { 
                    lock (this) {
                        if (_tagMappings == null) { 
                            Hashtable tagMappings = new Hashtable(StringComparer.OrdinalIgnoreCase); 

                            foreach (TagMapInfo tmi in this) { 
                                Type tagType = ConfigUtil.GetType(tmi.TagType, "tagType", tmi);
                                Type mappedTagType = ConfigUtil.GetType(tmi.MappedTagType, "mappedTagType", tmi);

                                if (tagType.IsAssignableFrom(mappedTagType) == false) { 
                                    throw new ConfigurationErrorsException(
                                        SR.GetString( 
                                            SR.Mapped_type_must_inherit, 
                                            tmi.MappedTagType,
                                            tmi.TagType), 
                                        tmi.ElementInformation.Properties["mappedTagType"].Source,
                                        tmi.ElementInformation.Properties["mappedTagType"].LineNumber);
                                }
 
                                tagMappings[tagType] = mappedTagType;
                            } 
                            _tagMappings = tagMappings; 
                        }
                    } 
                }
                return _tagMappings;
            }
        } 
    }
} 


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK