RootBuilder.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / RootBuilder.cs / 1305376 / 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;

    ///  
    /// 
    ///    [To be supplied.] 
    ///  
    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;
            } 
        } 

        ///  
        /// The method gets called when the CodeDom tree is fully built.  The way it is used is by first overriding
        /// ProcessGeneratedCode to keep track of the CodeCompileUnit, and to then have the ability to modify
        /// the CodeCompileUnit in this method
        ///  
        protected internal virtual void OnCodeGenerationComplete() {
        } 
 
        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; 
            }
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

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