ExtendedProtectionPolicyTypeConverter.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 / security / system / security / authentication / ExtendedProtection / ExtendedProtectionPolicyTypeConverter.cs / 1305376 / ExtendedProtectionPolicyTypeConverter.cs

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

using System; 
using System.Collections; 
using System.ComponentModel;
using System.ComponentModel.Design.Serialization; 
using System.Globalization;
using System.Reflection;

namespace System.Security.Authentication.ExtendedProtection 
{
    public class ExtendedProtectionPolicyTypeConverter : TypeConverter 
    { 
        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        { 
            if (destinationType == typeof(InstanceDescriptor))
            {
                return true;
            } 

            return base.CanConvertTo(context, destinationType); 
        } 

        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 
        {
            if (destinationType == typeof(InstanceDescriptor))
            {
                ExtendedProtectionPolicy policy = value as ExtendedProtectionPolicy; 

                if (policy != null) 
                { 
                    Type[] parameterTypes;
                    object[] parameterValues; 

                    if (policy.PolicyEnforcement == PolicyEnforcement.Never)
                    {
                        parameterTypes = new Type[] { typeof(PolicyEnforcement) }; 
                        parameterValues = new object[] { PolicyEnforcement.Never };
                    } 
                    else 
                    {
                        parameterTypes = new Type[] { typeof(PolicyEnforcement), typeof(ProtectionScenario), typeof(ICollection) }; 

                        object[] customServiceNames = null;
                        if (policy.CustomServiceNames != null && policy.CustomServiceNames.Count > 0)
                        { 
                            customServiceNames = new object[policy.CustomServiceNames.Count];
                            ((ICollection)policy.CustomServiceNames).CopyTo(customServiceNames, 0); 
                        } 

                        parameterValues = new object[] { policy.PolicyEnforcement, policy.ProtectionScenario, customServiceNames }; 
                    }

                    ConstructorInfo constructor = typeof(ExtendedProtectionPolicy).GetConstructor(parameterTypes);
                    return new InstanceDescriptor(constructor, parameterValues); 
                }
            } 
 
            return base.ConvertTo(context, culture, value, destinationType);
        } 
    }
}

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