BaseTypeViewSchema.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 / Designer / WebForms / System / Web / UI / Design / BaseTypeViewSchema.cs / 1 / BaseTypeViewSchema.cs

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

namespace System.Web.UI.Design { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Reflection;
 
    /// 
    /// Represents a view's schema based on a Type object retrieved 
    /// through Reflection. This is the base class for several view schema 
    /// types.
    ///  
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
    internal abstract class BaseTypeViewSchema : IDataSourceViewSchema {
        private Type _type;
        private string _viewName; 

        protected BaseTypeViewSchema(string viewName, Type type) { 
            Debug.Assert(type != null); 
            _type = type;
            _viewName = viewName; 
        }

        public IDataSourceFieldSchema[] GetFields() {
            // Search for indexer property 
            System.Collections.Generic.List fields = new System.Collections.Generic.List();
            Type rowType = GetRowType(_type); 
            if (rowType != null) { 
                // We specifically don't get schema when the type implements
                // ICustomTypeDescriptor since it is unlikely to have the 
                // correct schema at design time.
                if (!typeof(ICustomTypeDescriptor).IsAssignableFrom(rowType)) {
                    PropertyDescriptorCollection rowProperties = TypeDescriptor.GetProperties(rowType);
                    foreach (PropertyDescriptor rowProperty in rowProperties) { 
                        fields.Add(new TypeFieldSchema(rowProperty));
                    } 
                } 
            }
            return fields.ToArray(); 
        }

        public IDataSourceViewSchema[] GetChildren() {
            return null; 
        }
 
        ///  
        /// Derived classes must implement this method to retrieve the row
        /// type for a given object types. For example, in a strongly typed 
        /// DataTable the row type would be the strongly typed DataRow.
        /// 
        protected abstract Type GetRowType(Type objectType);
 
        public string Name {
            get { 
                return _viewName; 
            }
        } 
    }
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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