RootBuilder.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 / UI / RootBuilder.cs / 2 / RootBuilder.cs

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

/* 
 * Implements the root builder 
 *
 * Copyright (c) 1998 Microsoft Corporation 
 */

namespace System.Web.UI {
    using System.Runtime.InteropServices; 

    using System; 
    using System.Collections; 
    using System.IO;
    using System.Reflection; 
    using System.Web;
    using System.Web.Util;
    using System.Security.Permissions;
 

    ///  
    ///  
    ///    [To be supplied.]
    ///  
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class RootBuilder : TemplateBuilder {
        private MainTagNameToTypeMapper _typeMapper; 

        // Contains a mapping of all objects to their associated builders 
        private IDictionary _builtObjects; 

 
        public RootBuilder() {
        }

 
        /// 
        ///    [To be supplied.] 
        ///  
        public RootBuilder(TemplateParser parser) {
        } 

        public IDictionary BuiltObjects {
            get {
                // Store any objects created by this control builder 
                // so we can properly persist items
                if (_builtObjects == null) { 
                    _builtObjects = new Hashtable(ReferenceKeyComparer.Default); 
                }
                return _builtObjects; 
            }
        }

        internal void SetTypeMapper(MainTagNameToTypeMapper typeMapper) { 
            _typeMapper = typeMapper;
        } 
 

        ///  
        ///    [To be supplied.]
        /// 
        public override Type GetChildControlType(string tagName,
                                                 IDictionary attribs) { 
            // Is there a type to handle this control
            Type type = _typeMapper.GetControlType(tagName, attribs, 
                                                   true /*fAllowHtmlTags*/); 

            return type; 
        }

        internal override void PrepareNoCompilePageSupport() {
            base.PrepareNoCompilePageSupport(); 

            // This is needed to break any connection with the TemplateParser, allowing it 
            // to be fully collected when the parsing is complete 
            _typeMapper = null;
        } 

        private class ReferenceKeyComparer : IComparer, IEqualityComparer {
            internal static readonly ReferenceKeyComparer Default = new ReferenceKeyComparer();
 
            bool IEqualityComparer.Equals(object x, object y) {
                return Object.ReferenceEquals(x, y); 
            } 

            int IEqualityComparer.GetHashCode(object obj) { 
                return obj.GetHashCode();
            }

            int IComparer.Compare(object x, object y) { 
                if (Object.ReferenceEquals(x, y)) {
                    return 0; 
                } 
                if (x == null) {
                    return -1; 
                }
                if (y == null) {
                    return 1;
                } 
                return 1;
            } 
        } 
    }
}
                        

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