File: winforms\Managed\System\WinForms\DataGridViewCellConverter.cs
Project: ndp\fx\src\System.Windows.Forms.csproj (System.Windows.Forms)

//------------------------------------------------------------------------------
// <copyright file="DataGridViewCell.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------
 
namespace System.Windows.Forms
{
    using System;
    using System.Windows.Forms;
    using System.Globalization;
    using System.ComponentModel;
    using System.Reflection;
    using System.Runtime.Serialization.Formatters;
    using System.ComponentModel.Design.Serialization;
 
    // used by the designer to serialize the DataGridViewCell class
    internal class DataGridViewCellConverter : ExpandableObjectConverter {
        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 == null) {
                throw new ArgumentNullException("destinationType");
            }
 
            DataGridViewCell cell = value as DataGridViewCell;
            if (destinationType == typeof(InstanceDescriptor) && cell != null) {                
                ConstructorInfo ctor = cell.GetType().GetConstructor(new Type[0]);
                if (ctor != null) {
                    return new InstanceDescriptor(ctor, new object[0], false);
                }
            }
 
            return base.ConvertTo(context, culture, value, destinationType);
        }
    }
}