COM2IDispatchConverter.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2IDispatchConverter.cs / 1305376 / COM2IDispatchConverter.cs

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

 
 
namespace System.Windows.Forms.ComponentModel.Com2Interop {
 
    using System.Diagnostics;
    using System;

    using System.ComponentModel; 
    using System.Collections;
    using Microsoft.Win32; 
    using System.Globalization; 

    internal class Com2IDispatchConverter : Com2ExtendedTypeConverter{ 
        Com2PropertyDescriptor propDesc;

        /// 
        ///  
        ///     What we return textually for null.
        ///  
        protected static readonly string none = SR.GetString(SR.toStringNone); 

        private bool allowExpand; 


        public Com2IDispatchConverter(Com2PropertyDescriptor propDesc, bool allowExpand, TypeConverter baseConverter) : base(baseConverter){
             this.propDesc = propDesc; 
             this.allowExpand = allowExpand;
        } 
 

        public Com2IDispatchConverter(Com2PropertyDescriptor propDesc, bool allowExpand) : base(propDesc.PropertyType){ 
             this.propDesc = propDesc;
             this.allowExpand = allowExpand;
        }
 
        /// 
        ///  
        ///      Determines if this converter can convert an object in the given source 
        ///      type to the native type of the converter.
        ///  
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
            return false;
        }
 
        /// 
        ///  
        ///      Determines if this converter can convert an object to the given destination 
        ///      type.
        ///  
        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
            return destinationType == typeof(string);
        }
 

        ///  
        ///  
        ///      Converts the given object to another type.  The most common types to convert
        ///      are to and from a string object.  The default implementation will make a call 
        ///      to ToString on the object if the object is valid and if the destination
        ///      type is string.  If this cannot convert to the desitnation type, this will
        ///      throw a NotSupportedException.
        ///  
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
            if (destinationType == typeof(string)){ 
               if (value == null){ 
                  return none;
               } 

               string text = ComNativeDescriptor.Instance.GetName(value);

               if (text == null || text.Length == 0){ 
                     text = ComNativeDescriptor.Instance.GetClassName(value);
               } 
 
               if (text == null){
                  return "(Object)"; 
               }
               return text;
            }
            return base.ConvertTo(context, culture, value, destinationType); 
        }
 
        public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { 
            return TypeDescriptor.GetProperties(value, attributes);
        } 

        /// 
        /// 
        ///      Determines if this object supports properties.  By default, this 
        ///      is false.
        ///  
        public override bool GetPropertiesSupported(ITypeDescriptorContext context) { 
            return this.allowExpand;
        } 

        // no dropdown, please!
        //
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { 
            return false;
        } 
    } 
}

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

 
 
namespace System.Windows.Forms.ComponentModel.Com2Interop {
 
    using System.Diagnostics;
    using System;

    using System.ComponentModel; 
    using System.Collections;
    using Microsoft.Win32; 
    using System.Globalization; 

    internal class Com2IDispatchConverter : Com2ExtendedTypeConverter{ 
        Com2PropertyDescriptor propDesc;

        /// 
        ///  
        ///     What we return textually for null.
        ///  
        protected static readonly string none = SR.GetString(SR.toStringNone); 

        private bool allowExpand; 


        public Com2IDispatchConverter(Com2PropertyDescriptor propDesc, bool allowExpand, TypeConverter baseConverter) : base(baseConverter){
             this.propDesc = propDesc; 
             this.allowExpand = allowExpand;
        } 
 

        public Com2IDispatchConverter(Com2PropertyDescriptor propDesc, bool allowExpand) : base(propDesc.PropertyType){ 
             this.propDesc = propDesc;
             this.allowExpand = allowExpand;
        }
 
        /// 
        ///  
        ///      Determines if this converter can convert an object in the given source 
        ///      type to the native type of the converter.
        ///  
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
            return false;
        }
 
        /// 
        ///  
        ///      Determines if this converter can convert an object to the given destination 
        ///      type.
        ///  
        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
            return destinationType == typeof(string);
        }
 

        ///  
        ///  
        ///      Converts the given object to another type.  The most common types to convert
        ///      are to and from a string object.  The default implementation will make a call 
        ///      to ToString on the object if the object is valid and if the destination
        ///      type is string.  If this cannot convert to the desitnation type, this will
        ///      throw a NotSupportedException.
        ///  
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
            if (destinationType == typeof(string)){ 
               if (value == null){ 
                  return none;
               } 

               string text = ComNativeDescriptor.Instance.GetName(value);

               if (text == null || text.Length == 0){ 
                     text = ComNativeDescriptor.Instance.GetClassName(value);
               } 
 
               if (text == null){
                  return "(Object)"; 
               }
               return text;
            }
            return base.ConvertTo(context, culture, value, destinationType); 
        }
 
        public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { 
            return TypeDescriptor.GetProperties(value, attributes);
        } 

        /// 
        /// 
        ///      Determines if this object supports properties.  By default, this 
        ///      is false.
        ///  
        public override bool GetPropertiesSupported(ITypeDescriptorContext context) { 
            return this.allowExpand;
        } 

        // no dropdown, please!
        //
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { 
            return false;
        } 
    } 
}

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