WebPartUtil.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartUtil.cs / 1 / WebPartUtil.cs

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

namespace System.Web.UI.WebControls.WebParts { 
 
    using System;
    using System.Diagnostics; 
    using System.Reflection;
    using System.Web.Compilation;

    internal static class WebPartUtil { 

        // Called from WebPartManagerInternals and ConnectionsZone. 
        internal static object CreateObjectFromType(Type type) { 
            return HttpRuntime.FastCreatePublicInstance(type);
        } 

        // We use BuildManager.GetType() instead of Type.GetType() so we can load types from the
        // Code directory, even if no assembly is specified.
        internal static Type DeserializeType(string typeName, bool throwOnError) { 
            return BuildManager.GetType(typeName, throwOnError);
        } 
 
        internal static Type[] GetTypesForConstructor(ConstructorInfo constructor) {
            Debug.Assert(constructor != null); 
            ParameterInfo[] parameters = constructor.GetParameters();
            Type[] types = new Type[parameters.Length];
            for (int i = 0; i < parameters.Length; i++) {
                types[i] = parameters[i].ParameterType; 
            }
            return types; 
        } 

        internal static bool IsConnectionPointTypeValid(Type connectionPointType, bool isConsumer) { 
            if (connectionPointType == null) {
                return true;
            }
 
            if (!(connectionPointType.IsPublic || connectionPointType.IsNestedPublic)) {
                return false; 
            } 

            Type baseType = isConsumer ? typeof(ConsumerConnectionPoint) : typeof(ProviderConnectionPoint); 
            if (!connectionPointType.IsSubclassOf(baseType)) {
                return false;
            }
 
            Type[] constructorTypes = isConsumer ? ConsumerConnectionPoint.ConstructorTypes :
                ProviderConnectionPoint.ConstructorTypes; 
            ConstructorInfo constructor = connectionPointType.GetConstructor(constructorTypes); 
            if (constructor == null) {
                return false; 
            }

            return true;
        } 

        // This helper method used to be needed to resolve types in the Code directory.  Since this 
        // was fixed in VSWhidbey 380793, we can just use Type.AssemblyQualifiedName instead of 
        // Type.FullName.  However, I am leaving this helper method in place in case we need to make
        // another fix in the future. 
        internal static string SerializeType(Type type) {
            if (type.Assembly.GlobalAssemblyCache) {
                return type.AssemblyQualifiedName;
            } 
            else {
                return type.FullName; 
            } 
        }
    } 
}

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

namespace System.Web.UI.WebControls.WebParts { 
 
    using System;
    using System.Diagnostics; 
    using System.Reflection;
    using System.Web.Compilation;

    internal static class WebPartUtil { 

        // Called from WebPartManagerInternals and ConnectionsZone. 
        internal static object CreateObjectFromType(Type type) { 
            return HttpRuntime.FastCreatePublicInstance(type);
        } 

        // We use BuildManager.GetType() instead of Type.GetType() so we can load types from the
        // Code directory, even if no assembly is specified.
        internal static Type DeserializeType(string typeName, bool throwOnError) { 
            return BuildManager.GetType(typeName, throwOnError);
        } 
 
        internal static Type[] GetTypesForConstructor(ConstructorInfo constructor) {
            Debug.Assert(constructor != null); 
            ParameterInfo[] parameters = constructor.GetParameters();
            Type[] types = new Type[parameters.Length];
            for (int i = 0; i < parameters.Length; i++) {
                types[i] = parameters[i].ParameterType; 
            }
            return types; 
        } 

        internal static bool IsConnectionPointTypeValid(Type connectionPointType, bool isConsumer) { 
            if (connectionPointType == null) {
                return true;
            }
 
            if (!(connectionPointType.IsPublic || connectionPointType.IsNestedPublic)) {
                return false; 
            } 

            Type baseType = isConsumer ? typeof(ConsumerConnectionPoint) : typeof(ProviderConnectionPoint); 
            if (!connectionPointType.IsSubclassOf(baseType)) {
                return false;
            }
 
            Type[] constructorTypes = isConsumer ? ConsumerConnectionPoint.ConstructorTypes :
                ProviderConnectionPoint.ConstructorTypes; 
            ConstructorInfo constructor = connectionPointType.GetConstructor(constructorTypes); 
            if (constructor == null) {
                return false; 
            }

            return true;
        } 

        // This helper method used to be needed to resolve types in the Code directory.  Since this 
        // was fixed in VSWhidbey 380793, we can just use Type.AssemblyQualifiedName instead of 
        // Type.FullName.  However, I am leaving this helper method in place in case we need to make
        // another fix in the future. 
        internal static string SerializeType(Type type) {
            if (type.Assembly.GlobalAssemblyCache) {
                return type.AssemblyQualifiedName;
            } 
            else {
                return type.FullName; 
            } 
        }
    } 
}

// 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