dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.96k stars 4.65k forks source link

Add missing members of System.ComponentModel namespace #16565

Closed chlowell closed 4 years ago

chlowell commented 8 years ago

System.ComponentModel is a common dependency of applications developed for the .NET Framework. Porting these would be easier if more of the namespace were available in .NET Core. This issue proposes to add System.ComponentModel members with no designer, UI, or other unavailable dependencies.

Proposed additions

--- .NET Core current
+++ .NET Core proposed
 namespace System.ComponentModel {
  public class ArrayConverter : CollectionConverter {
    public ArrayConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
  public class AsyncCompletedEventArgs : EventArgs {
    public AsyncCompletedEventArgs(Exception error, bool cancelled, object userState);
    public bool Cancelled { get; }
    public Exception Error { get; }
    public object UserState { get; }
    protected void RaiseExceptionIfNecessary();
  }
  public delegate void AsyncCompletedEventHandler(object sender, AsyncCompletedEventArgs e);
  public sealed class AsyncOperation {
    public SynchronizationContext SynchronizationContext { get; }
    public object UserSuppliedState { get; }
    ~AsyncOperation();
    public void OperationCompleted();
    public void Post(SendOrPostCallback d, object arg);
    public void PostOperationCompleted(SendOrPostCallback d, object arg);
  }
  public static class AsyncOperationManager {
    public static SynchronizationContext SynchronizationContext { get; set; }
    public static AsyncOperation CreateOperation(object userSuppliedState);
  }
+ public class AttributeCollection : ICollection, IEnumerable {
+   public static readonly AttributeCollection Empty;
+   protected AttributeCollection();
+   public AttributeCollection(params Attribute[] attributes);
+   protected virtual Attribute[] Attributes { get; }
+   public int Count { get; }
+   bool System.Collections.ICollection.IsSynchronized { get; }
+   object System.Collections.ICollection.SyncRoot { get; }
+   public virtual Attribute this[int index] { get; }
+   public virtual Attribute this[Type attributeType] { get; }
+   public bool Contains(Attribute attribute);
+   public bool Contains(Attribute[] attributes);
+   public void CopyTo(Array array, int index);
+   public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[] newAttributes);
+   protected Attribute GetDefaultAttribute(Type attributeType);
+   public IEnumerator GetEnumerator();
+   public bool Matches(Attribute attribute);
+   public bool Matches(Attribute[] attributes);
  }
+ public class AttributeProviderAttribute : Attribute {
+   public AttributeProviderAttribute(string typeName);
+   public AttributeProviderAttribute(string typeName, string propertyName);
+   public AttributeProviderAttribute(Type type);
+   public string PropertyName { get; }
+   public string TypeName { get; }
  }
  public class BackgroundWorker : IDisposable {
    public BackgroundWorker();
    public bool CancellationPending { get; }
    public bool IsBusy { get; }
    public bool WorkerReportsProgress { get; set; }
    public bool WorkerSupportsCancellation { get; set; }
    public event DoWorkEventHandler DoWork;
    public event ProgressChangedEventHandler ProgressChanged;
    public event RunWorkerCompletedEventHandler RunWorkerCompleted;
    public void CancelAsync();
    public void Dispose();
    protected virtual void Dispose(bool disposing);
    protected virtual void OnDoWork(DoWorkEventArgs e);
    protected virtual void OnProgressChanged(ProgressChangedEventArgs e);
    protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs e);
    public void ReportProgress(int percentProgress);
    public void ReportProgress(int percentProgress, object userState);
    public void RunWorkerAsync();
    public void RunWorkerAsync(object argument);
  }
  public abstract class BaseNumberConverter : TypeConverter {
    protected BaseNumberConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type tdestinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class BooleanConverter : TypeConverter {
    public BooleanConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
+   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
  }
+ public sealed class BrowsableAttribute : Attribute {
+   public static readonly BrowsableAttribute Default;
+   public static readonly BrowsableAttribute No;
+   public static readonly BrowsableAttribute Yes;
+   public BrowsableAttribute(bool browsable);
+   public bool Browsable { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class ByteConverter : BaseNumberConverter {
    public ByteConverter();
  }
  public class CancelEventArgs : EventArgs {
    public CancelEventArgs();
    public CancelEventArgs(bool cancel);
    public bool Cancel { get; set; }
  }
+ public delegate void CancelEventHandler(object sender, CancelEventArgs e);
+ public class CategoryAttribute : Attribute {
+   public CategoryAttribute();
+   public CategoryAttribute(string category);
+   public static CategoryAttribute Action { get; }
+   public static CategoryAttribute Appearance { get; }
+   public static CategoryAttribute Asynchronous { get; }
+   public static CategoryAttribute Behavior { get; }
+   public string Category { get; }
+   public static CategoryAttribute Data { get; }
+   public static CategoryAttribute Default { get; }
+   public static CategoryAttribute Design { get; }
+   public static CategoryAttribute DragDrop { get; }
+   public static CategoryAttribute Focus { get; }
+   public static CategoryAttribute Format { get; }
+   public static CategoryAttribute Key { get; }
+   public static CategoryAttribute Layout { get; }
+   public static CategoryAttribute Mouse { get; }
+   public static CategoryAttribute WindowStyle { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
+   protected virtual string GetLocalizedString(string value);
  }
  public class CharConverter : TypeConverter {
    public CharConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
+ public enum CollectionChangeAction {
+   Add = 1,
+   Refresh = 3,
+   Remove = 2,
  }
+ public class CollectionChangeEventArgs : EventArgs {
+   public CollectionChangeEventArgs(CollectionChangeAction action, object element);
+   public virtual CollectionChangeAction Action { get; }
+   public virtual object Element { get; }
  }
+ public delegate void CollectionChangeEventHandler(object sender, CollectionChangeEventArgs e);
  public class CollectionConverter : TypeConverter {
    public CollectionConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
  public class ComponentCollection {
  }
+ public abstract class CustomTypeDescriptor : ICustomTypeDescriptor {
+   protected CustomTypeDescriptor();
+   protected CustomTypeDescriptor(ICustomTypeDescriptor parent);
+   public virtual AttributeCollection GetAttributes();
+   public virtual string GetClassName();
+   public virtual string GetComponentName();
+   public virtual TypeConverter GetConverter();
+   public virtual EventDescriptor GetDefaultEvent();
+   public virtual PropertyDescriptor GetDefaultProperty();
+   public virtual object GetEditor(Type editorBaseType);
+   public virtual EventDescriptorCollection GetEvents();
+   public virtual EventDescriptorCollection GetEvents(Attribute[] attributes);
+   public virtual PropertyDescriptorCollection GetProperties();
+   public virtual PropertyDescriptorCollection GetProperties(Attribute[] attributes);
+   public virtual object GetPropertyOwner(PropertyDescriptor pd);
  }
  public class DataErrorsChangedEventArgs : EventArgs {
    public DataErrorsChangedEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
  public class DateTimeConverter : TypeConverter {
    public DateTimeConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class DateTimeOffsetConverter : TypeConverter {
    public DateTimeOffsetConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class DecimalConverter : BaseNumberConverter {
    public DecimalConverter();
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
+ public sealed class DefaultEventAttribute : Attribute {
+   public static readonly DefaultEventAttribute Default;
+   public DefaultEventAttribute(string name);
+   public string Name { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public sealed class DefaultPropertyAttribute : Attribute {
+   public static readonly DefaultPropertyAttribute Default;
+   public DefaultPropertyAttribute(string name);
+   public string Name { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class DefaultValueAttribute : Attribute {
    public DefaultValueAttribute(bool value);
    public DefaultValueAttribute(byte value);
    public DefaultValueAttribute(char value);
    public DefaultValueAttribute(double value);
    public DefaultValueAttribute(short value);
    public DefaultValueAttribute(int value);
    public DefaultValueAttribute(long value);
    public DefaultValueAttribute(object value);
    public DefaultValueAttribute(float value);
    public DefaultValueAttribute(string value);
    public DefaultValueAttribute(Type type, string value);
    public virtual object Value { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
+ public class DescriptionAttribute : Attribute {
+   public static readonly DescriptionAttribute Default;
+   public DescriptionAttribute();
+   public DescriptionAttribute(string description);
+   public virtual string Description { get; }
+   protected string DescriptionValue { get; set; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public sealed class DesignerCategoryAttribute : Attribute {
+   public static readonly DesignerCategoryAttribute Component;
+   public static readonly DesignerCategoryAttribute Default;
+   public static readonly DesignerCategoryAttribute Form;
+   public static readonly DesignerCategoryAttribute Generic;
+   public DesignerCategoryAttribute();
+   public DesignerCategoryAttribute(string category);
+   public string Category { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public enum DesignerSerializationVisibility {
+   Content = 2,
+   Hidden = 0,
+   Visible = 1,
  }
+ public sealed class DesignerSerializationVisibilityAttribute : Attribute {
+   public static readonly DesignerSerializationVisibilityAttribute Content;
+   public static readonly DesignerSerializationVisibilityAttribute Default;
+   public static readonly DesignerSerializationVisibilityAttribute Hidden;
+   public static readonly DesignerSerializationVisibilityAttribute Visible;
+   public DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility visibility);
+   public DesignerSerializationVisibility Visibility { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public class DesignOnlyAttribute : Attribute {
+   public static readonly DesignOnlyAttribute Default;
+   public static readonly DesignOnlyAttribute No;
+   public static readonly DesignOnlyAttribute Yes;
+   public DesignOnlyAttribute(bool isDesignOnly);
+   public bool IsDesignOnly { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public class DisplayNameAttribute : Attribute {
+   public static readonly DisplayNameAttribute Default;
+   public DisplayNameAttribute();
+   public DisplayNameAttribute(string displayName);
+   public virtual string DisplayName { get; }
+   protected string DisplayNameValue { get; set; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class DoubleConverter : BaseNumberConverter {
    public DoubleConverter();
  }
  public class DoWorkEventArgs : EventArgs {
    public DoWorkEventArgs(object argument);
    public object Argument { get; }
    public bool Cancel { get; set; }
    public object Result { get; set; }
  }
  public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e);
  public sealed class EditorBrowsableAttribute : Attribute {
    public EditorBrowsableAttribute(EditorBrowsableState state);
    public EditorBrowsableState State { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public enum EditorBrowsableState {
    Advanced = 2,
    Always = 0,
    Never = 1,
  }
  public class EnumConverter : TypeConverter {
    public EnumConverter(Type type);
+   protected virtual IComparer Comparer { get; }
    protected Type EnumType { get; }
+   protected TypeConverter.StandardValuesCollection Values { get; set; }
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
+   public override bool IsValid(ITypeDescriptorContext context, object value);
  }
+ public abstract class EventDescriptor : MemberDescriptor {
+   protected EventDescriptor(MemberDescriptor descr);
+   protected EventDescriptor(MemberDescriptor descr, Attribute[] attrs);
+   protected EventDescriptor(string name, Attribute[] attrs);
+   public abstract Type ComponentType { get; }
+   public abstract Type EventType { get; }
+   public abstract bool IsMulticast { get; }
+   public abstract void AddEventHandler(object component, Delegate value);
+   public abstract void RemoveEventHandler(object component, Delegate value);
  }
+ public class EventDescriptorCollection : ICollection, IEnumerable, IList {
+   public static readonly EventDescriptorCollection Empty;
+   public EventDescriptorCollection(EventDescriptor[] events);
+   public EventDescriptorCollection(EventDescriptor[] events, bool readOnly);
+   public int Count { get; }
+   bool System.Collections.ICollection.IsSynchronized { get; }
+   object System.Collections.ICollection.SyncRoot { get; }
+   bool System.Collections.IList.IsFixedSize { get; }
+   bool System.Collections.IList.IsReadOnly { get; }
+   object System.Collections.IList.this[int index] { get; set; }
+   public virtual EventDescriptor this[int index] { get; }
+   public virtual EventDescriptor this[string name] { get; }
+   public int Add(EventDescriptor value);
+   public void Clear();
+   public bool Contains(EventDescriptor value);
+   public virtual EventDescriptor Find(string name, bool ignoreCase);
+   public IEnumerator GetEnumerator();
+   public int IndexOf(EventDescriptor value);
+   public void Insert(int index, EventDescriptor value);
+   protected void InternalSort(IComparer sorter);
+   protected void InternalSort(string[] names);
+   public void Remove(EventDescriptor value);
+   public void RemoveAt(int index);
+   public virtual EventDescriptorCollection Sort();
+   public virtual EventDescriptorCollection Sort(IComparer comparer);
+   public virtual EventDescriptorCollection Sort(string[] names);
+   public virtual EventDescriptorCollection Sort(string[] names, IComparer comparer);
+   void System.Collections.ICollection.CopyTo(Array array, int index);
+   int System.Collections.IList.Add(object value);
+   bool System.Collections.IList.Contains(object value);
+   int System.Collections.IList.IndexOf(object value);
+   void System.Collections.IList.Insert(int index, object value);
+   void System.Collections.IList.Remove(object value);
  }
+ public sealed class EventHandlerList : IDisposable {
+   public EventHandlerList();
+   public Delegate this[object key] { get; set; }
+   public void AddHandler(object key, Delegate value);
+   public void AddHandlers(EventHandlerList listToAddFrom);
+   public void Dispose();
+   public void RemoveHandler(object key, Delegate value);
  }
+ public sealed class ExtenderProvidedPropertyAttribute : Attribute {
+   public ExtenderProvidedPropertyAttribute();
+   public PropertyDescriptor ExtenderProperty { get; }
+   public IExtenderProvider Provider { get; }
+   public Type ReceiverType { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class GuidConverter : TypeConverter {
    public GuidConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
+ public class HandledEventArgs : EventArgs {
+   public HandledEventArgs();
+   public HandledEventArgs(bool defaultHandledValue);
+   public bool Handled { get; set; }
  }
+ public delegate void HandledEventHandler(object sender, HandledEventArgs e);
  public interface IChangeTracking {
    bool IsChanged { get; }
    void AcceptChanges();
  }
  public interface IComponent : IDisposable {
    ISite Site { get; set; }
    event EventHandler Disposed;
  }
  public interface IContainer : IDisposable {
    ComponentCollection Components { get; }
    void Add(IComponent component);
    void Add(IComponent component, string name);
    void Remove(IComponent component);
  }
+ public interface ICustomTypeDescriptor {
+   AttributeCollection GetAttributes();
+   string GetClassName();
+   string GetComponentName();
+   TypeConverter GetConverter();
+   EventDescriptor GetDefaultEvent();
+   PropertyDescriptor GetDefaultProperty();
+   object GetEditor(Type editorBaseType);
+   EventDescriptorCollection GetEvents();
+   EventDescriptorCollection GetEvents(Attribute[] attributes);
+   PropertyDescriptorCollection GetProperties();
+   PropertyDescriptorCollection GetProperties(Attribute[] attributes);
+   object GetPropertyOwner(PropertyDescriptor pd);
  }
  public interface IEditableObject {
    void BeginEdit();
    void CancelEdit();
    void EndEdit();
  }
+ public interface IExtenderProvider {
+   bool CanExtend(object extendee);
  }
+ public interface IListSource {
+   bool ContainsListCollection { get; }
+   IList GetList();
  }
+ public sealed class ImmutableObjectAttribute : Attribute {
+   public static readonly ImmutableObjectAttribute Default;
+   public static readonly ImmutableObjectAttribute No;
+   public static readonly ImmutableObjectAttribute Yes;
+   public ImmutableObjectAttribute(bool immutable);
+   public bool Immutable { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public sealed class InitializationEventAttribute : Attribute {
+   public InitializationEventAttribute(string eventName);
+   public string EventName { get; }
  }
  public interface INotifyDataErrorInfo {
    bool HasErrors { get; }
    event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
    IEnumerable GetErrors(string propertyName);
  }
  public interface INotifyPropertyChanged {
    event PropertyChangedEventHandler PropertyChanged;
  }
  public interface INotifyPropertyChanging {
    event PropertyChangingEventHandler PropertyChanging;
  }
  public class Int16Converter : BaseNumberConverter {
    public Int16Converter();
  }
  public class Int32Converter : BaseNumberConverter {
    public Int32Converter();
  }
  public class Int64Converter : BaseNumberConverter {
    public Int64Converter();
  }
+ public class InvalidAsynchronousStateException : ArgumentException {
+   public InvalidAsynchronousStateException();
+   public InvalidAsynchronousStateException(string message);
+   public InvalidAsynchronousStateException(string message, Exception innerException);
  }
  public interface IRevertibleChangeTracking : IChangeTracking {
    void RejectChanges();
  }
  public interface ISite : IServiceProvider {
    IComponent Component { get; }
    IContainer Container { get; }
    bool DesignMode { get; }
    string Name { get; set; }
  }
  public interface ITypeDescriptorContext : IServiceProvider {
    IContainer Container { get; }
    object Instance { get; }
    PropertyDescriptor PropertyDescriptor { get; }
    void OnComponentChanged();
    bool OnComponentChanging();
  }
+ public interface ITypedList {
+   PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors);
+   string GetListName(PropertyDescriptor[] listAccessors);
  }
+ public sealed class LocalizableAttribute : Attribute {
+   public static readonly LocalizableAttribute Default;
+   public static readonly LocalizableAttribute No;
+   public static readonly LocalizableAttribute Yes;
+   public LocalizableAttribute(bool isLocalizable);
+   public bool IsLocalizable { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public abstract class MemberDescriptor {
+   protected MemberDescriptor(MemberDescriptor descr);
+   protected MemberDescriptor(MemberDescriptor oldMemberDescriptor, Attribute[] newAttributes);
+   protected MemberDescriptor(string name);
+   protected MemberDescriptor(string name, Attribute[] attributes);
+   protected virtual Attribute[] AttributeArray { get; set; }
+   public virtual AttributeCollection Attributes { get; }
+   public virtual string Category { get; }
+   public virtual string Description { get; }
+   public virtual bool DesignTimeOnly { get; }
+   public virtual string DisplayName { get; }
+   public virtual bool IsBrowsable { get; }
+   public virtual string Name { get; }
+   protected virtual int NameHashCode { get; }
+   protected virtual AttributeCollection CreateAttributeCollection();
+   public override bool Equals(object obj);
+   protected virtual void FillAttributes(IList attributeList);
+   protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType);
+   protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType, bool publicOnly);
+   public override int GetHashCode();
+   protected virtual object GetInvocationTarget(Type type, object instance);
+   protected static ISite GetSite(object component);
  }
+ public sealed class MergablePropertyAttribute : Attribute {
+   public static readonly MergablePropertyAttribute Default;
+   public static readonly MergablePropertyAttribute No;
+   public static readonly MergablePropertyAttribute Yes;
+   public MergablePropertyAttribute(bool allowMerge);
+   public bool AllowMerge { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class MultilineStringConverter : TypeConverter {
    public MultilineStringConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
+ public sealed class NotifyParentPropertyAttribute : Attribute {
+   public static readonly NotifyParentPropertyAttribute Default;
+   public static readonly NotifyParentPropertyAttribute No;
+   public static readonly NotifyParentPropertyAttribute Yes;
+   public NotifyParentPropertyAttribute(bool notifyParent);
+   public bool NotifyParent { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
  public class NullableConverter : TypeConverter {
    public NullableConverter(Type type);
    public Type NullableType { get; }
    public Type UnderlyingType { get; }
    public TypeConverter UnderlyingTypeConverter { get; }
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues);
+   public override bool GetCreateInstanceSupported(ITypeDescriptorContext context);
+   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
+   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
+   public override bool IsValid(ITypeDescriptorContext context, object value);
  }
+ public sealed class ParenthesizePropertyNameAttribute : Attribute {
+   public static readonly ParenthesizePropertyNameAttribute Default;
+   public ParenthesizePropertyNameAttribute();
+   public ParenthesizePropertyNameAttribute(bool needParenthesis);
+   public bool NeedParenthesis { get; }
+   public override bool Equals(object o);
+   public override int GetHashCode();
  }
  public class ProgressChangedEventArgs : EventArgs {
    public ProgressChangedEventArgs(int progressPercentage, object userState);
    public int ProgressPercentage { get; }
    public object UserState { get; }
  }
  public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e);
  public class PropertyChangedEventArgs : EventArgs {
    public PropertyChangedEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
  public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);
  public class PropertyChangingEventArgs : EventArgs {
    public PropertyChangingEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
  public delegate void PropertyChangingEventHandler(object sender, PropertyChangingEventArgs e);
  public abstract class PropertyDescriptor : MemberDescriptor {
+   protected PropertyDescriptor(MemberDescriptor descr);
+   protected PropertyDescriptor(MemberDescriptor descr, Attribute[] attrs);
+   protected PropertyDescriptor(string name, Attribute[] attrs);
+   public abstract Type ComponentType { get; }
+   public virtual TypeConverter Converter { get; }
+   public virtual bool IsLocalizable { get; }
+   public abstract bool IsReadOnly { get; }
+   public abstract Type PropertyType { get; }
+   public DesignerSerializationVisibility SerializationVisibility { get; }
+   public virtual bool SupportsChangeEvents { get; }
+   public virtual void AddValueChanged(object component, EventHandler handler);
+   public abstract bool CanResetValue(object component);
+   protected object CreateInstance(Type type);
+   public override bool Equals(object obj);
+   protected override void FillAttributes(IList attributeList);
+   public PropertyDescriptorCollection GetChildProperties();
+   public PropertyDescriptorCollection GetChildProperties(Attribute[] filter);
+   public PropertyDescriptorCollection GetChildProperties(object instance);
+   public virtual PropertyDescriptorCollection GetChildProperties(object instance, Attribute[] filter);
+   public virtual object GetEditor(Type editorBaseType);
+   public override int GetHashCode();
+   protected override object GetInvocationTarget(Type type, object instance);
+   protected Type GetTypeFromName(string typeName);
+   public abstract object GetValue(object component);
+   protected internal EventHandler GetValueChangedHandler(object component);
+   protected virtual void OnValueChanged(object component, EventArgs e);
+   public virtual void RemoveValueChanged(object component, EventHandler handler);
+   public abstract void ResetValue(object component);
+   public abstract void SetValue(object component, object value);
+   public abstract bool ShouldSerializeValue(object component);
  }
+ public class PropertyDescriptorCollection : ICollection, IDictionary, IEnumerable, IList {
+   public static readonly PropertyDescriptorCollection Empty;
+   public PropertyDescriptorCollection(PropertyDescriptor[] properties);
+   public PropertyDescriptorCollection(PropertyDescriptor[] properties, bool readOnly);
+   public int Count { get; }
+   bool System.Collections.ICollection.IsSynchronized { get; }
+   object System.Collections.ICollection.SyncRoot { get; }
+   bool System.Collections.IDictionary.IsFixedSize { get; }
+   bool System.Collections.IDictionary.IsReadOnly { get; }
+   object System.Collections.IDictionary.this[object key] { get; set; }
+   ICollection System.Collections.IDictionary.Keys { get; }
+   ICollection System.Collections.IDictionary.Values { get; }
+   bool System.Collections.IList.IsFixedSize { get; }
+   bool System.Collections.IList.IsReadOnly { get; }
+   object System.Collections.IList.this[int index] { get; set; }
+   public virtual PropertyDescriptor this[int index] { get; }
+   public virtual PropertyDescriptor this[string name] { get; }
+   public int Add(PropertyDescriptor value);
+   public void Clear();
+   public bool Contains(PropertyDescriptor value);
+   public void CopyTo(Array array, int index);
+   public virtual PropertyDescriptor Find(string name, bool ignoreCase);
+   public virtual IEnumerator GetEnumerator();
+   public int IndexOf(PropertyDescriptor value);
+   public void Insert(int index, PropertyDescriptor value);
+   protected void InternalSort(IComparer sorter);
+   protected void InternalSort(string[] names);
+   public void Remove(PropertyDescriptor value);
+   public void RemoveAt(int index);
+   public virtual PropertyDescriptorCollection Sort();
+   public virtual PropertyDescriptorCollection Sort(IComparer comparer);
+   public virtual PropertyDescriptorCollection Sort(string[] names);
+   public virtual PropertyDescriptorCollection Sort(string[] names, IComparer comparer);
+   void System.Collections.IDictionary.Add(object key, object value);
+   bool System.Collections.IDictionary.Contains(object key);
+   IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator();
+   void System.Collections.IDictionary.Remove(object key);
+   int System.Collections.IList.Add(object value);
+   bool System.Collections.IList.Contains(object value);
+   int System.Collections.IList.IndexOf(object value);
+   void System.Collections.IList.Insert(int index, object value);
+   void System.Collections.IList.Remove(object value);
  }
+ public sealed class ProvidePropertyAttribute : Attribute {
+   public ProvidePropertyAttribute(string propertyName, string receiverTypeName);
+   public ProvidePropertyAttribute(string propertyName, Type receiverType);
+   public string PropertyName { get; }
+   public string ReceiverTypeName { get; }
+   public override bool Equals(object obj);
+   public override int GetHashCode();
  }
+ public sealed class ReadOnlyAttribute : Attribute {
+   public static readonly ReadOnlyAttribute Default;
+   public static readonly ReadOnlyAttribute No;
+   public static readonly ReadOnlyAttribute Yes;
+   public ReadOnlyAttribute(bool isReadOnly);
+   public bool IsReadOnly { get; }
+   public override bool Equals(object value);
+   public override int GetHashCode();
  }
+ public class RefreshEventArgs : EventArgs {
+   public RefreshEventArgs(object componentChanged);
+   public RefreshEventArgs(Type typeChanged);
+   public object ComponentChanged { get; }
+   public Type TypeChanged { get; }
  }
+ public delegate void RefreshEventHandler(RefreshEventArgs e);
+ public enum RefreshProperties {
+   All = 1,
+   None = 0,
+   Repaint = 2,
  }
+ public sealed class RefreshPropertiesAttribute : Attribute {
+   public static readonly RefreshPropertiesAttribute All;
+   public static readonly RefreshPropertiesAttribute Default;
+   public static readonly RefreshPropertiesAttribute Repaint;
+   public RefreshPropertiesAttribute(RefreshProperties refresh);
+   public RefreshProperties RefreshProperties { get; }
+   public override bool Equals(object value);
+   public override int GetHashCode();
  }
  public class RunWorkerCompletedEventArgs : AsyncCompletedEventArgs {
    public RunWorkerCompletedEventArgs(object result, Exception error, bool cancelled);
    public object Result { get; }
    public new object UserState { get; }
  }
  public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs e);
  public class SByteConverter : BaseNumberConverter {
    public SByteConverter();
  }
  public class SingleConverter : BaseNumberConverter {
    public SingleConverter();
  }
  public class StringConverter : TypeConverter {
    public StringConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
  }
  public class TimeSpanConverter : TypeConverter {
    public TimeSpanConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class TypeConverter {
    public TypeConverter();
    public virtual bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public bool CanConvertFrom(Type sourceType);
    public virtual bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public bool CanConvertTo(Type destinationType);
    public virtual object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public object ConvertFrom(object value);
+   public object ConvertFromInvariantString(ITypeDescriptorContext context, string text);
    public object ConvertFromInvariantString(string text);
    public object ConvertFromString(ITypeDescriptorContext context, CultureInfo culture, string text);
+   public object ConvertFromString(ITypeDescriptorContext context, string text);
    public object ConvertFromString(string text);
    public virtual object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public object ConvertTo(object value, Type destinationType);
+   public string ConvertToInvariantString(ITypeDescriptorContext context, object value);
    public string ConvertToInvariantString(object value);
    public string ConvertToString(ITypeDescriptorContext context, CultureInfo culture, object value);
+   public string ConvertToString(ITypeDescriptorContext context, object value);
    public string ConvertToString(object value);
+   public object CreateInstance(IDictionary propertyValues);
+   public virtual object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues);
    protected Exception GetConvertFromException(object value);
    protected Exception GetConvertToException(object value, Type destinationType);
+   public bool GetCreateInstanceSupported();
+   public virtual bool GetCreateInstanceSupported(ITypeDescriptorContext context);
+   public PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value);
+   public virtual PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+   public PropertyDescriptorCollection GetProperties(object value);
+   public bool GetPropertiesSupported();
+   public virtual bool GetPropertiesSupported(ITypeDescriptorContext context);
+   public ICollection GetStandardValues();
+   public virtual TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+   public bool GetStandardValuesExclusive();
+   public virtual bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+   public bool GetStandardValuesSupported();
+   public virtual bool GetStandardValuesSupported(ITypeDescriptorContext context);
+   public virtual bool IsValid(ITypeDescriptorContext context, object value);
+   public bool IsValid(object value);
+   protected PropertyDescriptorCollection SortProperties(PropertyDescriptorCollection props, string[] names);
+   protected abstract class SimplePropertyDescriptor : PropertyDescriptor {
+     protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType);
+     protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType, Attribute[] attributes);
+     public override Type ComponentType { get; }
+     public override bool IsReadOnly { get; }
+     public override Type PropertyType { get; }
+     public override bool CanResetValue(object component);
+     public override void ResetValue(object component);
+     public override bool ShouldSerializeValue(object component);
    }
+   public class StandardValuesCollection : ICollection, IEnumerable {
+     public StandardValuesCollection(ICollection values);
+     public int Count { get; }
+     bool System.Collections.ICollection.IsSynchronized { get; }
+     object System.Collections.ICollection.SyncRoot { get; }
+     public object this[int index] { get; }
+     public void CopyTo(Array array, int index);
+     public IEnumerator GetEnumerator();
    }
  }
  public sealed class TypeConverterAttribute : Attribute {
+   public static readonly TypeConverterAttribute Default;
+   public TypeConverterAttribute();
    public TypeConverterAttribute(string typeName);
    public TypeConverterAttribute(Type type);
    public string ConverterTypeName { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
+ public abstract class TypeDescriptionProvider {
+   protected TypeDescriptionProvider();
+   protected TypeDescriptionProvider(TypeDescriptionProvider parent);
+   public virtual object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args);
+   public virtual IDictionary GetCache(object instance);
+   public virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance);
+   protected internal virtual IExtenderProvider[] GetExtenderProviders(object instance);
+   public virtual string GetFullComponentName(object component);
+   public Type GetReflectionType(object instance);
+   public Type GetReflectionType(Type objectType);
+   public virtual Type GetReflectionType(Type objectType, object instance);
+   public virtual Type GetRuntimeType(Type reflectionType);
+   public ICustomTypeDescriptor GetTypeDescriptor(object instance);
+   public ICustomTypeDescriptor GetTypeDescriptor(Type objectType);
+   public virtual ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance);
+   public virtual bool IsSupportedType(Type type);
  }
+ public sealed class TypeDescriptionProviderAttribute : Attribute {
+   public TypeDescriptionProviderAttribute(string typeName);
+   public TypeDescriptionProviderAttribute(Type type);
+   public string TypeName { get; }
  }
  public sealed class TypeDescriptor {
+   public static Type InterfaceType { get; }
+   public static event RefreshEventHandler Refreshed;
+   public static TypeDescriptionProvider AddAttributes(object instance, params Attribute[] attributes);
+   public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[] attributes);
+   public static void AddEditorTable(Type editorBaseType, Hashtable table);
+   public static void AddProvider(TypeDescriptionProvider provider, object instance);
+   public static void AddProvider(TypeDescriptionProvider provider, Type type);
+   public static void AddProviderTransparent(TypeDescriptionProvider provider, object instance);
+   public static void AddProviderTransparent(TypeDescriptionProvider provider, Type type);
+   public static void CreateAssociation(object primary, object secondary);
+   public static EventDescriptor CreateEvent(Type componentType, EventDescriptor oldEventDescriptor, params Attribute[] attributes);
+   public static EventDescriptor CreateEvent(Type componentType, string name, Type type, params Attribute[] attributes);
+   public static object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args);
+   public static PropertyDescriptor CreateProperty(Type componentType, PropertyDescriptor oldPropertyDescriptor, params Attribute[] attributes);
+   public static PropertyDescriptor CreateProperty(Type componentType, string name, Type type, params Attribute[] attributes);
+   public static object GetAssociation(Type type, object primary);
+   public static AttributeCollection GetAttributes(object component);
+   public static AttributeCollection GetAttributes(object component, bool noCustomTypeDesc);
+   public static AttributeCollection GetAttributes(Type componentType);
+   public static string GetClassName(object component);
+   public static string GetClassName(object component, bool noCustomTypeDesc);
+   public static string GetClassName(Type componentType);
+   public static string GetComponentName(object component);
+   public static string GetComponentName(object component, bool noCustomTypeDesc);
+   public static TypeConverter GetConverter(object component);
+   public static TypeConverter GetConverter(object component, bool noCustomTypeDesc);
    public static TypeConverter GetConverter(Type type);
+   public static EventDescriptor GetDefaultEvent(object component);
+   public static EventDescriptor GetDefaultEvent(object component, bool noCustomTypeDesc);
+   public static EventDescriptor GetDefaultEvent(Type componentType);
+   public static PropertyDescriptor GetDefaultProperty(object component);
+   public static PropertyDescriptor GetDefaultProperty(object component, bool noCustomTypeDesc);
+   public static PropertyDescriptor GetDefaultProperty(Type componentType);
+   public static object GetEditor(object component, Type editorBaseType);
+   public static object GetEditor(object component, Type editorBaseType, bool noCustomTypeDesc);
+   public static object GetEditor(Type type, Type editorBaseType);
+   public static EventDescriptorCollection GetEvents(object component);
+   public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes);
+   public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes, bool noCustomTypeDesc);
+   public static EventDescriptorCollection GetEvents(object component, bool noCustomTypeDesc);
+   public static EventDescriptorCollection GetEvents(Type componentType);
+   public static EventDescriptorCollection GetEvents(Type componentType, Attribute[] attributes);
+   public static string GetFullComponentName(object component);
+   public static PropertyDescriptorCollection GetProperties(object component);
+   public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes);
+   public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes, bool noCustomTypeDesc);
+   public static PropertyDescriptorCollection GetProperties(object component, bool noCustomTypeDesc);
+   public static PropertyDescriptorCollection GetProperties(Type componentType);
+   public static PropertyDescriptorCollection GetProperties(Type componentType, Attribute[] attributes);
+   public static TypeDescriptionProvider GetProvider(object instance);
+   public static TypeDescriptionProvider GetProvider(Type type);
+   public static Type GetReflectionType(object instance);
+   public static Type GetReflectionType(Type type);
+   public static void Refresh(object component);
+   public static void Refresh(Assembly assembly);
+   public static void Refresh(Module module);
+   public static void Refresh(Type type);
+   public static void RemoveAssociation(object primary, object secondary);
+   public static void RemoveAssociations(object primary);
+   public static void RemoveProvider(TypeDescriptionProvider provider, object instance);
+   public static void RemoveProvider(TypeDescriptionProvider provider, Type type);
+   public static void RemoveProviderTransparent(TypeDescriptionProvider provider, object instance);
+   public static void RemoveProviderTransparent(TypeDescriptionProvider provider, Type type);
+   public static void SortDescriptorArray(IList infos);
  }
  public abstract class TypeListConverter : TypeConverter {
    protected TypeListConverter(Type[] types);
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
  }
  public class UInt16Converter : BaseNumberConverter {
    public UInt16Converter();
  }
  public class UInt32Converter : BaseNumberConverter {
    public UInt32Converter();
  }
  public class UInt64Converter : BaseNumberConverter {
    public UInt64Converter();
  }
  public class Win32Exception : Exception {
    public Win32Exception();
    public Win32Exception(int error);
    public Win32Exception(int error, string message);
    public Win32Exception(string message);
    public Win32Exception(string message, Exception innerException);
    public int NativeErrorCode { get; }
  }
 }

.NET Framework vs .NET Core proposed

--- .NET Framework 4.6.1
+++ .NET Core proposed
 namespace System.ComponentModel {
- public class AddingNewEventArgs : EventArgs {
-   public AddingNewEventArgs();
-   public AddingNewEventArgs(object newObject);
-   public object NewObject { get; set; }
  }
- public delegate void AddingNewEventHandler(object sender, AddingNewEventArgs e);
- public sealed class AmbientValueAttribute : Attribute {
-   public AmbientValueAttribute(bool value);
-   public AmbientValueAttribute(byte value);
-   public AmbientValueAttribute(char value);
-   public AmbientValueAttribute(double value);
-   public AmbientValueAttribute(short value);
-   public AmbientValueAttribute(int value);
-   public AmbientValueAttribute(long value);
-   public AmbientValueAttribute(object value);
-   public AmbientValueAttribute(float value);
-   public AmbientValueAttribute(string value);
-   public AmbientValueAttribute(Type type, string value);
-   public object Value { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
  public class ArrayConverter : CollectionConverter {
    public ArrayConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
    public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
  public class AsyncCompletedEventArgs : EventArgs {
-   public AsyncCompletedEventArgs();
    public AsyncCompletedEventArgs(Exception error, bool cancelled, object userState);
    public bool Cancelled { get; }
    public Exception Error { get; }
    public object UserState { get; }
    protected void RaiseExceptionIfNecessary();
  }
  public delegate void AsyncCompletedEventHandler(object sender, AsyncCompletedEventArgs e);
  public sealed class AsyncOperation {
    public SynchronizationContext SynchronizationContext { get; }
    public object UserSuppliedState { get; }
    ~AsyncOperation();
    public void OperationCompleted();
    public void Post(SendOrPostCallback d, object arg);
    public void PostOperationCompleted(SendOrPostCallback d, object arg);
  }
  public static class AsyncOperationManager {
    public static SynchronizationContext SynchronizationContext { get; set; }
    public static AsyncOperation CreateOperation(object userSuppliedState);
  }
  public class AttributeCollection : ICollection, IEnumerable {
    public static readonly AttributeCollection Empty;
    protected AttributeCollection();
    public AttributeCollection(params Attribute[] attributes);
    protected virtual Attribute[] Attributes { get; }
    public int Count { get; }
-   int System.Collections.ICollection.Count { get; }
    bool System.Collections.ICollection.IsSynchronized { get; }
    object System.Collections.ICollection.SyncRoot { get; }
    public virtual Attribute this[int index] { get; }
    public virtual Attribute this[Type attributeType] { get; }
    public bool Contains(Attribute attribute);
    public bool Contains(Attribute[] attributes);
    public void CopyTo(Array array, int index);
    public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[] newAttributes);
    protected Attribute GetDefaultAttribute(Type attributeType);
    public IEnumerator GetEnumerator();
    public bool Matches(Attribute attribute);
    public bool Matches(Attribute[] attributes);
-   IEnumerator System.Collections.IEnumerable.GetEnumerator();
  }
  public class AttributeProviderAttribute : Attribute {
    public AttributeProviderAttribute(string typeName);
    public AttributeProviderAttribute(string typeName, string propertyName);
    public AttributeProviderAttribute(Type type);
    public string PropertyName { get; }
    public string TypeName { get; }
  }
  public class BackgroundWorker : ComponentIDisposable {
    public BackgroundWorker();
    public bool CancellationPending { get; }
    public bool IsBusy { get; }
    public bool WorkerReportsProgress { get; set; }
    public bool WorkerSupportsCancellation { get; set; }
    public event DoWorkEventHandler DoWork;
    public event ProgressChangedEventHandler ProgressChanged;
    public event RunWorkerCompletedEventHandler RunWorkerCompleted;
    public void CancelAsync();
+   public void Dispose();
+   protected virtual void Dispose(bool disposing);
    protected virtual void OnDoWork(DoWorkEventArgs e);
    protected virtual void OnProgressChanged(ProgressChangedEventArgs e);
    protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs e);
    public void ReportProgress(int percentProgress);
    public void ReportProgress(int percentProgress, object userState);
    public void RunWorkerAsync();
    public void RunWorkerAsync(object argument);
  }
  public abstract class BaseNumberConverter : TypeConverter {
    protected BaseNumberConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type tdestinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
- public sealed class BindableAttribute : Attribute {
-   public static readonly BindableAttribute Default;
-   public static readonly BindableAttribute No;
-   public static readonly BindableAttribute Yes;
-   public BindableAttribute(bool bindable);
-   public BindableAttribute(bool bindable, BindingDirection direction);
-   public BindableAttribute(BindableSupport flags);
-   public BindableAttribute(BindableSupport flags, BindingDirection direction);
-   public bool Bindable { get; }
-   public BindingDirection Direction { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public enum BindableSupport {
-   Default = 2,
-   No = 0,
-   Yes = 1,
  }
- public enum BindingDirection {
-   OneWay = 0,
-   TwoWay = 1,
  }
- public class BindingList<T> : Collection<T>, IBindingList, ICancelAddNew, ICollection, IEnumerable, IList, IRaiseItemChangedEvents {
-   public BindingList();
-   public BindingList(IList<T> list);
-   public bool AllowEdit { get; set; }
-   public bool AllowNew { get; set; }
-   public bool AllowRemove { get; set; }
-   protected virtual bool IsSortedCore { get; }
-   public bool RaiseListChangedEvents { get; set; }
-   protected virtual ListSortDirection SortDirectionCore { get; }
-   protected virtual PropertyDescriptor SortPropertyCore { get; }
-   protected virtual bool SupportsChangeNotificationCore { get; }
-   protected virtual bool SupportsSearchingCore { get; }
-   protected virtual bool SupportsSortingCore { get; }
-   bool System.ComponentModel.IBindingList.AllowEdit { get; }
-   bool System.ComponentModel.IBindingList.AllowNew { get; }
-   bool System.ComponentModel.IBindingList.AllowRemove { get; }
-   bool System.ComponentModel.IBindingList.IsSorted { get; }
-   ListSortDirection System.ComponentModel.IBindingList.SortDirection { get; }
-   PropertyDescriptor System.ComponentModel.IBindingList.SortProperty { get; }
-   bool System.ComponentModel.IBindingList.SupportsChangeNotification { get; }
-   bool System.ComponentModel.IBindingList.SupportsSearching { get; }
-   bool System.ComponentModel.IBindingList.SupportsSorting { get; }
-   bool System.ComponentModel.IRaiseItemChangedEvents.RaisesItemChangedEvents { get; }
-   public event AddingNewEventHandler AddingNew;
-   public event ListChangedEventHandler ListChanged;
-   public T AddNew();
-   protected virtual object AddNewCore();
-   protected virtual void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction);
-   public virtual void CancelNew(int itemIndex);
-   protected override void ClearItems();
-   public virtual void EndNew(int itemIndex);
-   protected virtual int FindCore(PropertyDescriptor prop, object key);
-   protected override void InsertItem(int index, T item);
-   protected virtual void OnAddingNew(AddingNewEventArgs e);
-   protected virtual void OnListChanged(ListChangedEventArgs e);
-   protected override void RemoveItem(int index);
-   protected virtual void RemoveSortCore();
-   public void ResetBindings();
-   public void ResetItem(int position);
-   protected override void SetItem(int index, T item);
-   void System.ComponentModel.IBindingList.AddIndex(PropertyDescriptor prop);
-   object System.ComponentModel.IBindingList.AddNew();
-   void System.ComponentModel.IBindingList.ApplySort(PropertyDescriptor prop, ListSortDirection direction);
-   int System.ComponentModel.IBindingList.Find(PropertyDescriptor prop, object key);
-   void System.ComponentModel.IBindingList.RemoveIndex(PropertyDescriptor prop);
-   void System.ComponentModel.IBindingList.RemoveSort();
  }
  public class BooleanConverter : TypeConverter {
    public BooleanConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
  }
  public sealed class BrowsableAttribute : Attribute {
    public static readonly BrowsableAttribute Default;
    public static readonly BrowsableAttribute No;
    public static readonly BrowsableAttribute Yes;
    public BrowsableAttribute(bool browsable);
    public bool Browsable { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class ByteConverter : BaseNumberConverter {
    public ByteConverter();
  }
  public class CancelEventArgs : EventArgs {
    public CancelEventArgs();
    public CancelEventArgs(bool cancel);
    public bool Cancel { get; set; }
  }
  public delegate void CancelEventHandler(object sender, CancelEventArgs e);
  public class CategoryAttribute : Attribute {
    public CategoryAttribute();
    public CategoryAttribute(string category);
    public static CategoryAttribute Action { get; }
    public static CategoryAttribute Appearance { get; }
    public static CategoryAttribute Asynchronous { get; }
    public static CategoryAttribute Behavior { get; }
    public string Category { get; }
    public static CategoryAttribute Data { get; }
    public static CategoryAttribute Default { get; }
    public static CategoryAttribute Design { get; }
    public static CategoryAttribute DragDrop { get; }
    public static CategoryAttribute Focus { get; }
    public static CategoryAttribute Format { get; }
    public static CategoryAttribute Key { get; }
    public static CategoryAttribute Layout { get; }
    public static CategoryAttribute Mouse { get; }
    public static CategoryAttribute WindowStyle { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
    protected virtual string GetLocalizedString(string value);
-   public override bool IsDefaultAttribute();
  }
  public class CharConverter : TypeConverter {
    public CharConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public enum CollectionChangeAction {
    Add = 1,
    Refresh = 3,
    Remove = 2,
  }
  public class CollectionChangeEventArgs : EventArgs {
    public CollectionChangeEventArgs(CollectionChangeAction action, object element);
    public virtual CollectionChangeAction Action { get; }
    public virtual object Element { get; }
  }
  public delegate void CollectionChangeEventHandler(object sender, CollectionChangeEventArgs e);
  public class CollectionConverter : TypeConverter {
    public CollectionConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
    public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
- public sealed class ComplexBindingPropertiesAttribute : Attribute {
-   public static readonly ComplexBindingPropertiesAttribute Default;
-   public ComplexBindingPropertiesAttribute();
-   public ComplexBindingPropertiesAttribute(string dataSource);
-   public ComplexBindingPropertiesAttribute(string dataSource, string dataMember);
-   public string DataMember { get; }
-   public string DataSource { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
- public class Component : MarshalByRefObject, IComponent, IDisposable {
-   public Component();
-   protected virtual bool CanRaiseEvents { get; }
-   public IContainer Container { get; }
-   protected bool DesignMode { get; }
-   protected EventHandlerList Events { get; }
-   public virtual ISite Site { get; set; }
-   public event EventHandler Disposed;
-   public void Dispose();
-   protected virtual void Dispose(bool disposing);
-   ~Component();
-   protected virtual object GetService(Type service);
-   public override string ToString();
  }
  public class ComponentCollection : ReadOnlyCollectionBase {
-   public ComponentCollection(IComponent[] components);
-   public virtual IComponent this[int index] { get; }
-   public virtual IComponent this[string name] { get; }
-   public void CopyTo(IComponent[] array, int index);
  }
- public class ComponentConverter : ReferenceConverter {
-   public ComponentConverter(Type type);
-   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
-   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
- public abstract class ComponentEditor {
-   protected ComponentEditor();
-   public abstract bool EditComponent(ITypeDescriptorContext context, object component);
-   public bool EditComponent(object component);
  }
- public class ComponentResourceManager : ResourceManager {
-   public ComponentResourceManager();
-   public ComponentResourceManager(Type t);
-   public void ApplyResources(object value, string objectName);
-   public virtual void ApplyResources(object value, string objectName, CultureInfo culture);
  }
- public class Container : IContainer, IDisposable {
-   public Container();
-   public virtual ComponentCollection Components { get; }
-   public virtual void Add(IComponent component);
-   public virtual void Add(IComponent component, string name);
-   protected virtual ISite CreateSite(IComponent component, string name);
-   public void Dispose();
-   protected virtual void Dispose(bool disposing);
-   ~Container();
-   protected virtual object GetService(Type service);
-   public virtual void Remove(IComponent component);
-   protected void RemoveWithoutUnsiting(IComponent component);
-   protected virtual void ValidateName(IComponent component, string name);
  }
- public abstract class ContainerFilterService {
-   protected ContainerFilterService();
-   public virtual ComponentCollection FilterComponents(ComponentCollection components);
  }
- public class CultureInfoConverter : TypeConverter {
-   public CultureInfoConverter();
-   public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
-   public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
-   public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
-   public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
-   protected virtual string GetCultureName(CultureInfo culture);
-   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
-   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
-   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
  }
  public abstract class CustomTypeDescriptor : ICustomTypeDescriptor {
    protected CustomTypeDescriptor();
    protected CustomTypeDescriptor(ICustomTypeDescriptor parent);
    public virtual AttributeCollection GetAttributes();
    public virtual string GetClassName();
    public virtual string GetComponentName();
    public virtual TypeConverter GetConverter();
    public virtual EventDescriptor GetDefaultEvent();
    public virtual PropertyDescriptor GetDefaultProperty();
    public virtual object GetEditor(Type editorBaseType);
    public virtual EventDescriptorCollection GetEvents();
    public virtual EventDescriptorCollection GetEvents(Attribute[] attributes);
    public virtual PropertyDescriptorCollection GetProperties();
    public virtual PropertyDescriptorCollection GetProperties(Attribute[] attributes);
    public virtual object GetPropertyOwner(PropertyDescriptor pd);
  }
  public class DataErrorsChangedEventArgs : EventArgs {
    public DataErrorsChangedEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
- public sealed class DataObjectAttribute : Attribute {
-   public static readonly DataObjectAttribute DataObject;
-   public static readonly DataObjectAttribute Default;
-   public static readonly DataObjectAttribute NonDataObject;
-   public DataObjectAttribute();
-   public DataObjectAttribute(bool isDataObject);
-   public bool IsDataObject { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class DataObjectFieldAttribute : Attribute {
-   public DataObjectFieldAttribute(bool primaryKey);
-   public DataObjectFieldAttribute(bool primaryKey, bool isIdentity);
-   public DataObjectFieldAttribute(bool primaryKey, bool isIdentity, bool isNullable);
-   public DataObjectFieldAttribute(bool primaryKey, bool isIdentity, bool isNullable, int length);
-   public bool IsIdentity { get; }
-   public bool IsNullable { get; }
-   public int Length { get; }
-   public bool PrimaryKey { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
- public sealed class DataObjectMethodAttribute : Attribute {
-   public DataObjectMethodAttribute(DataObjectMethodType methodType);
-   public DataObjectMethodAttribute(DataObjectMethodType methodType, bool isDefault);
-   public bool IsDefault { get; }
-   public DataObjectMethodType MethodType { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool Match(object obj);
  }
- public enum DataObjectMethodType {
-   Delete = 4,
-   Fill = 0,
-   Insert = 3,
-   Select = 1,
-   Update = 2,
  }
  public class DateTimeConverter : TypeConverter {
    public DateTimeConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class DateTimeOffsetConverter : TypeConverter {
    public DateTimeOffsetConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class DecimalConverter : BaseNumberConverter {
    public DecimalConverter();
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
- public sealed class DefaultBindingPropertyAttribute : Attribute {
-   public static readonly DefaultBindingPropertyAttribute Default;
-   public DefaultBindingPropertyAttribute();
-   public DefaultBindingPropertyAttribute(string name);
-   public string Name { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
  public sealed class DefaultEventAttribute : Attribute {
    public static readonly DefaultEventAttribute Default;
    public DefaultEventAttribute(string name);
    public string Name { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public sealed class DefaultPropertyAttribute : Attribute {
    public static readonly DefaultPropertyAttribute Default;
    public DefaultPropertyAttribute(string name);
    public string Name { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public class DefaultValueAttribute : Attribute {
    public DefaultValueAttribute(bool value);
    public DefaultValueAttribute(byte value);
    public DefaultValueAttribute(char value);
    public DefaultValueAttribute(double value);
    public DefaultValueAttribute(short value);
    public DefaultValueAttribute(int value);
    public DefaultValueAttribute(long value);
    public DefaultValueAttribute(object value);
    public DefaultValueAttribute(float value);
    public DefaultValueAttribute(string value);
    public DefaultValueAttribute(Type type, string value);
    public virtual object Value { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   protected void SetValue(object value);
  }
  public class DescriptionAttribute : Attribute {
    public static readonly DescriptionAttribute Default;
    public DescriptionAttribute();
    public DescriptionAttribute(string description);
    public virtual string Description { get; }
    protected string DescriptionValue { get; set; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class DesignerAttribute : Attribute {
-   public DesignerAttribute(string designerTypeName);
-   public DesignerAttribute(string designerTypeName, string designerBaseTypeName);
-   public DesignerAttribute(string designerTypeName, Type designerBaseType);
-   public DesignerAttribute(Type designerType);
-   public DesignerAttribute(Type designerType, Type designerBaseType);
-   public string DesignerBaseTypeName { get; }
-   public string DesignerTypeName { get; }
-   public override object TypeId { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
 public sealed class DesignerCategoryAttribute : Attribute {
   public static readonly DesignerCategoryAttribute Component;
   public static readonly DesignerCategoryAttribute Default;
   public static readonly DesignerCategoryAttribute Form;
   public static readonly DesignerCategoryAttribute Generic;
   public DesignerCategoryAttribute();
   public DesignerCategoryAttribute(string category);
   public string Category { get; }
-   public override object TypeId { get; }
   public override bool Equals(object obj);
   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public enum DesignerSerializationVisibility {
    Content = 2,
    Hidden = 0,
    Visible = 1,
  }
  public sealed class DesignerSerializationVisibilityAttribute : Attribute {
    public static readonly DesignerSerializationVisibilityAttribute Content;
    public static readonly DesignerSerializationVisibilityAttribute Default;
    public static readonly DesignerSerializationVisibilityAttribute Hidden;
    public static readonly DesignerSerializationVisibilityAttribute Visible;
    public DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility visibility);
    public DesignerSerializationVisibility Visibility { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public sealed class DesignOnlyAttribute : Attribute {
    public static readonly DesignOnlyAttribute Default;
    public static readonly DesignOnlyAttribute No;
    public static readonly DesignOnlyAttribute Yes;
    public DesignOnlyAttribute(bool isDesignOnly);
    public bool IsDesignOnly { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class DesignTimeVisibleAttribute : Attribute {
-   public static readonly DesignTimeVisibleAttribute Default;
-   public static readonly DesignTimeVisibleAttribute No;
-   public static readonly DesignTimeVisibleAttribute Yes;
-   public DesignTimeVisibleAttribute();
-   public DesignTimeVisibleAttribute(bool visible);
-   public bool Visible { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class DisplayNameAttribute : Attribute {
    public static readonly DisplayNameAttribute Default;
    public DisplayNameAttribute();
    public DisplayNameAttribute(string displayName);
    public virtual string DisplayName { get; }
    protected string DisplayNameValue { get; set; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class DoubleConverter : BaseNumberConverter {
    public DoubleConverter();
  }
  public class DoWorkEventArgs : CancelEventArgsEventArgs {
    public DoWorkEventArgs(object argument);
    public object Argument { get; }
+   public bool Cancel { get; set; }
    public object Result { get; set; }
  }
  public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e);
- public sealed class EditorAttribute : Attribute {
-   public EditorAttribute();
-   public EditorAttribute(string typeName, string baseTypeName);
-   public EditorAttribute(string typeName, Type baseType);
-   public EditorAttribute(Type type, Type baseType);
-   public string EditorBaseTypeName { get; }
-   public string EditorTypeName { get; }
-   public override object TypeId { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
  public sealed class EditorBrowsableAttribute : Attribute {
-   public EditorBrowsableAttribute();
    public EditorBrowsableAttribute(EditorBrowsableState state);
    public EditorBrowsableState State { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public enum EditorBrowsableState {
    Advanced = 2,
    Always = 0,
    Never = 1,
  }
  public class EnumConverter : TypeConverter {
    public EnumConverter(Type type);
    protected virtual IComparer Comparer { get; }
    protected Type EnumType { get; }
    protected TypeConverter.StandardValuesCollection Values { get; set; }
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
    public override bool IsValid(ITypeDescriptorContext context, object value);
  }
  public abstract class EventDescriptor : MemberDescriptor {
    protected EventDescriptor(MemberDescriptor descr);
    protected EventDescriptor(MemberDescriptor descr, Attribute[] attrs);
    protected EventDescriptor(string name, Attribute[] attrs);
    public abstract Type ComponentType { get; }
    public abstract Type EventType { get; }
    public abstract bool IsMulticast { get; }
    public abstract void AddEventHandler(object component, Delegate value);
    public abstract void RemoveEventHandler(object component, Delegate value);
  }
  public class EventDescriptorCollection : ICollection, IEnumerable, IList {
    public static readonly EventDescriptorCollection Empty;
    public EventDescriptorCollection(EventDescriptor[] events);
    public EventDescriptorCollection(EventDescriptor[] events, bool readOnly);
    public int Count { get; }
-   int System.Collections.ICollection.Count { get; }
    bool System.Collections.ICollection.IsSynchronized { get; }
    object System.Collections.ICollection.SyncRoot { get; }
    bool System.Collections.IList.IsFixedSize { get; }
    bool System.Collections.IList.IsReadOnly { get; }
    object System.Collections.IList.this[int index] { get; set; }
    public virtual EventDescriptor this[int index] { get; }
    public virtual EventDescriptor this[string name] { get; }
    public int Add(EventDescriptor value);
    public void Clear();
    public bool Contains(EventDescriptor value);
    public virtual EventDescriptor Find(string name, bool ignoreCase);
    public IEnumerator GetEnumerator();
    public int IndexOf(EventDescriptor value);
    public void Insert(int index, EventDescriptor value);
    protected void InternalSort(IComparer sorter);
    protected void InternalSort(string[] names);
    public void Remove(EventDescriptor value);
    public void RemoveAt(int index);
    public virtual EventDescriptorCollection Sort();
    public virtual EventDescriptorCollection Sort(IComparer comparer);
    public virtual EventDescriptorCollection Sort(string[] names);
    public virtual EventDescriptorCollection Sort(string[] names, IComparer comparer);
    void System.Collections.ICollection.CopyTo(Array array, int index);
-   IEnumerator System.Collections.IEnumerable.GetEnumerator();
    int System.Collections.IList.Add(object value);
-   void System.Collections.IList.Clear();
    bool System.Collections.IList.Contains(object value);
    int System.Collections.IList.IndexOf(object value);
    void System.Collections.IList.Insert(int index, object value);
    void System.Collections.IList.Remove(object value);
-   void System.Collections.IList.RemoveAt(int index);
  }
  public sealed class EventHandlerList : IDisposable {
    public EventHandlerList();
    public Delegate this[object key] { get; set; }
    public void AddHandler(object key, Delegate value);
    public void AddHandlers(EventHandlerList listToAddFrom);
    public void Dispose();
    public void RemoveHandler(object key, Delegate value);
  }
- public class ExpandableObjectConverter : TypeConverter {
-   public ExpandableObjectConverter();
-   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
-   public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
  public sealed class ExtenderProvidedPropertyAttribute : Attribute {
    public ExtenderProvidedPropertyAttribute();
    public PropertyDescriptor ExtenderProperty { get; }
    public IExtenderProvider Provider { get; }
    public Type ReceiverType { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class GuidConverter : TypeConverter {
    public GuidConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
  public class HandledEventArgs : EventArgs {
    public HandledEventArgs();
    public HandledEventArgs(bool defaultHandledValue);
    public bool Handled { get; set; }
  }
  public delegate void HandledEventHandler(object sender, HandledEventArgs e);
- public interface IBindingList : ICollection, IEnumerable, IList {
-   bool AllowEdit { get; }
-   bool AllowNew { get; }
-   bool AllowRemove { get; }
-   bool IsSorted { get; }
-   ListSortDirection SortDirection { get; }
-   PropertyDescriptor SortProperty { get; }
-   bool SupportsChangeNotification { get; }
-   bool SupportsSearching { get; }
-   bool SupportsSorting { get; }
-   event ListChangedEventHandler ListChanged;
-   void AddIndex(PropertyDescriptor property);
-   object AddNew();
-   void ApplySort(PropertyDescriptor property, ListSortDirection direction);
-   int Find(PropertyDescriptor property, object key);
-   void RemoveIndex(PropertyDescriptor property);
-   void RemoveSort();
  }
- public interface IBindingListView : IBindingList, ICollection, IEnumerable, IList {
-   string Filter { get; set; }
-   ListSortDescriptionCollection SortDescriptions { get; }
-   bool SupportsAdvancedSorting { get; }
-   bool SupportsFiltering { get; }
-   void ApplySort(ListSortDescriptionCollection sorts);
-   void RemoveFilter();
  }
- public interface ICancelAddNew {
-   void CancelNew(int itemIndex);
-   void EndNew(int itemIndex);
  }
  public interface IChangeTracking {
    bool IsChanged { get; }
    void AcceptChanges();
  }
- public interface IComNativeDescriptorHandler {
-   AttributeCollection GetAttributes(object component);
-   string GetClassName(object component);
-   TypeConverter GetConverter(object component);
-   EventDescriptor GetDefaultEvent(object component);
-   PropertyDescriptor GetDefaultProperty(object component);
-   object GetEditor(object component, Type baseEditorType);
-   EventDescriptorCollection GetEvents(object component);
-   EventDescriptorCollection GetEvents(object component, Attribute[] attributes);
-   string GetName(object component);
-   PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes);
-   object GetPropertyValue(object component, int dispid, ref bool success);
-   object GetPropertyValue(object component, string propertyName, ref bool success);
  }
  public interface IComponent : IDisposable {
    ISite Site { get; set; }
    event EventHandler Disposed;
  }
  public interface IContainer : IDisposable {
    ComponentCollection Components { get; }
    void Add(IComponent component);
    void Add(IComponent component, string name);
    void Remove(IComponent component);
  }
  public interface ICustomTypeDescriptor {
    AttributeCollection GetAttributes();
    string GetClassName();
    string GetComponentName();
    TypeConverter GetConverter();
    EventDescriptor GetDefaultEvent();
    PropertyDescriptor GetDefaultProperty();
    object GetEditor(Type editorBaseType);
    EventDescriptorCollection GetEvents();
    EventDescriptorCollection GetEvents(Attribute[] attributes);
    PropertyDescriptorCollection GetProperties();
    PropertyDescriptorCollection GetProperties(Attribute[] attributes);
    object GetPropertyOwner(PropertyDescriptor pd);
  }
- public interface IDataErrorInfo {
-   string Error { get; }
-   string this[string columnName] { get; }
  }
  public interface IEditableObject {
    void BeginEdit();
    void CancelEdit();
    void EndEdit();
  }
  public interface IExtenderProvider {
    bool CanExtend(object extendee);
  }
- public interface IIntellisenseBuilder {
-   string Name { get; }
-   bool Show(string language, string value, ref string newValue);
  }
  public interface IListSource {
    bool ContainsListCollection { get; }
    IList GetList();
  }
  public sealed class ImmutableObjectAttribute : Attribute {
    public static readonly ImmutableObjectAttribute Default;
    public static readonly ImmutableObjectAttribute No;
    public static readonly ImmutableObjectAttribute Yes;
    public ImmutableObjectAttribute(bool immutable);
    public bool Immutable { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public interface INestedContainer : IContainer, IDisposable {
-   IComponent Owner { get; }
  }
- public interface INestedSite : IServiceProvider, ISite {
-   string FullName { get; }
  }
- public sealed class InheritanceAttribute : Attribute {
-   public static readonly InheritanceAttribute Default;
-   public static readonly InheritanceAttribute Inherited;
-   public static readonly InheritanceAttribute InheritedReadOnly;
-   public static readonly InheritanceAttribute NotInherited;
-   public InheritanceAttribute();
-   public InheritanceAttribute(InheritanceLevel inheritanceLevel);
-   public InheritanceLevel InheritanceLevel { get; }
-   public override bool Equals(object value);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
-   public override string ToString();
  }
- public enum InheritanceLevel {
-   Inherited = 1,
-   InheritedReadOnly = 2,
-   NotInherited = 3,
  }
  public sealed class InitializationEventAttribute : Attribute {
    public InitializationEventAttribute(string eventName);
    public string EventName { get; }
  }
  public interface INotifyDataErrorInfo {
    bool HasErrors { get; }
    event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
    IEnumerable GetErrors(string propertyName);
  }
  public interface INotifyPropertyChanged {
    event PropertyChangedEventHandler PropertyChanged;
  }
  public interface INotifyPropertyChanging {
    event PropertyChangingEventHandler PropertyChanging;
  }
- public class InstallerTypeAttribute : Attribute {
-   public InstallerTypeAttribute(string typeName);
-   public InstallerTypeAttribute(Type installerType);
-   public virtual Type InstallerType { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
- public abstract class InstanceCreationEditor {
-   protected InstanceCreationEditor();
-   public virtual string Text { get; }
-   public abstract object CreateInstance(ITypeDescriptorContext context, Type instanceType);
  }
  public class Int16Converter : BaseNumberConverter {
    public Int16Converter();
  }
  public class Int32Converter : BaseNumberConverter {
    public Int32Converter();
  }
  public class Int64Converter : BaseNumberConverter {
    public Int64Converter();
  }
  public class InvalidAsynchronousStateException : ArgumentException {
    public InvalidAsynchronousStateException();
-   protected InvalidAsynchronousStateException(SerializationInfo info, StreamingContext context);
    public InvalidAsynchronousStateException(string message);
    public InvalidAsynchronousStateException(string message, Exception innerException);
  }
- public class InvalidEnumArgumentException : ArgumentException {
-   public InvalidEnumArgumentException();
-   protected InvalidEnumArgumentException(SerializationInfo info, StreamingContext context);
-   public InvalidEnumArgumentException(string message);
-   public InvalidEnumArgumentException(string message, Exception innerException);
-   public InvalidEnumArgumentException(string argumentName, int invalidValue, Type enumClass);
  }
- public interface IRaiseItemChangedEvents {
-   bool RaisesItemChangedEvents { get; }
  }
  public interface IRevertibleChangeTracking : IChangeTracking {
    void RejectChanges();
  }
  public interface ISite : IServiceProvider {
    IComponent Component { get; }
    IContainer Container { get; }
    bool DesignMode { get; }
    string Name { get; set; }
  }
- public interface ISupportInitialize {
-   void BeginInit();
-   void EndInit();
  }
- public interface ISupportInitializeNotification : ISupportInitialize {
-   bool IsInitialized { get; }
-   event EventHandler Initialized;
  }
- public interface ISynchronizeInvoke {
-   bool InvokeRequired { get; }
-   IAsyncResult BeginInvoke(Delegate method, object[] args);
-   object EndInvoke(IAsyncResult result);
-   object Invoke(Delegate method, object[] args);
  }
  public interface ITypeDescriptorContext : IServiceProvider {
    IContainer Container { get; }
    object Instance { get; }
    PropertyDescriptor PropertyDescriptor { get; }
    void OnComponentChanged();
    bool OnComponentChanging();
  }
  public interface ITypedList {
    PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors);
    string GetListName(PropertyDescriptor[] listAccessors);
  }
- public abstract class License : IDisposable {
-   protected License();
-   public abstract string LicenseKey { get; }
-   public abstract void Dispose();
  }
- public class LicenseContext : IServiceProvider {
-   public LicenseContext();
-   public virtual LicenseUsageMode UsageMode { get; }
-   public virtual string GetSavedLicenseKey(Type type, Assembly resourceAssembly);
-   public virtual object GetService(Type type);
-   public virtual void SetSavedLicenseKey(Type type, string key);
  }
- public class LicenseException : SystemException {
-   protected LicenseException(SerializationInfo info, StreamingContext context);
-   public LicenseException(Type type);
-   public LicenseException(Type type, object instance);
-   public LicenseException(Type type, object instance, string message);
-   public LicenseException(Type type, object instance, string message, Exception innerException);
-   public Type LicensedType { get; }
-   public override void GetObjectData(SerializationInfo info, StreamingContext context);
  }
- public sealed class LicenseManager {
-   public static LicenseContext CurrentContext { get; set; }
-   public static LicenseUsageMode UsageMode { get; }
-   public static object CreateWithContext(Type type, LicenseContext creationContext);
-   public static object CreateWithContext(Type type, LicenseContext creationContext, object[] args);
-   public static bool IsLicensed(Type type);
-   public static bool IsValid(Type type);
-   public static bool IsValid(Type type, object instance, out License license);
-   public static void LockContext(object contextUser);
-   public static void UnlockContext(object contextUser);
-   public static void Validate(Type type);
-   public static License Validate(Type type, object instance);
  }
- public abstract class LicenseProvider {
-   protected LicenseProvider();
-   public abstract License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions);
  }
- public sealed class LicenseProviderAttribute : Attribute {
-   public static readonly LicenseProviderAttribute Default;
-   public LicenseProviderAttribute();
-   public LicenseProviderAttribute(string typeName);
-   public LicenseProviderAttribute(Type type);
-   public Type LicenseProvider { get; }
-   public override object TypeId { get; }
-   public override bool Equals(object value);
-   public override int GetHashCode();
  }
- public enum LicenseUsageMode {
-   Designtime = 1,
-   Runtime = 0,
  }
- public class LicFileLicenseProvider : LicenseProvider {
-   public LicFileLicenseProvider();
-   protected virtual string GetKey(Type type);
-   public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions);
-   protected virtual bool IsKeyValid(string key, Type type);
  }
- public sealed class ListBindableAttribute : Attribute {
-   public static readonly ListBindableAttribute Default;
-   public static readonly ListBindableAttribute No;
-   public static readonly ListBindableAttribute Yes;
-   public ListBindableAttribute(bool listBindable);
-   public ListBindableAttribute(BindableSupport flags);
-   public bool ListBindable { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public class ListChangedEventArgs : EventArgs {
-   public ListChangedEventArgs(ListChangedType listChangedType, PropertyDescriptor propDesc);
-   public ListChangedEventArgs(ListChangedType listChangedType, int newIndex);
-   public ListChangedEventArgs(ListChangedType listChangedType, int newIndex, PropertyDescriptor propDesc);
-   public ListChangedEventArgs(ListChangedType listChangedType, int newIndex, int oldIndex);
-   public ListChangedType ListChangedType { get; }
-   public int NewIndex { get; }
-   public int OldIndex { get; }
-   public PropertyDescriptor PropertyDescriptor { get; }
  }
- public delegate void ListChangedEventHandler(object sender, ListChangedEventArgs e);
- public enum ListChangedType {
-   ItemAdded = 1,
-   ItemChanged = 4,
-   ItemDeleted = 2,
-   ItemMoved = 3,
-   PropertyDescriptorAdded = 5,
-   PropertyDescriptorChanged = 7,
-   PropertyDescriptorDeleted = 6,
-   Reset = 0,
  }
- public class ListSortDescription {
-   public ListSortDescription(PropertyDescriptor property, ListSortDirection direction);
-   public PropertyDescriptor PropertyDescriptor { get; set; }
-   public ListSortDirection SortDirection { get; set; }
  }
- public class ListSortDescriptionCollection : ICollection, IEnumerable, IList {
-   public ListSortDescriptionCollection();
-   public ListSortDescriptionCollection(ListSortDescription[] sorts);
-   public int Count { get; }
-   bool System.Collections.ICollection.IsSynchronized { get; }
-   object System.Collections.ICollection.SyncRoot { get; }
-   bool System.Collections.IList.IsFixedSize { get; }
-   bool System.Collections.IList.IsReadOnly { get; }
-   object System.Collections.IList.this[int index] { get; set; }
-   public ListSortDescription this[int index] { get; set; }
-   public bool Contains(object value);
-   public void CopyTo(Array array, int index);
-   public int IndexOf(object value);
-   IEnumerator System.Collections.IEnumerable.GetEnumerator();
-   int System.Collections.IList.Add(object value);
-   void System.Collections.IList.Clear();
-   void System.Collections.IList.Insert(int index, object value);
-   void System.Collections.IList.Remove(object value);
-   void System.Collections.IList.RemoveAt(int index);
  }
- public enum ListSortDirection {
-   Ascending = 0,
-   Descending = 1,
  }
  public sealed class LocalizableAttribute : Attribute {
    public static readonly LocalizableAttribute Default;
    public static readonly LocalizableAttribute No;
    public static readonly LocalizableAttribute Yes;
    public LocalizableAttribute(bool isLocalizable);
    public bool IsLocalizable { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class LookupBindingPropertiesAttribute : Attribute {
-   public static readonly LookupBindingPropertiesAttribute Default;
-   public LookupBindingPropertiesAttribute();
-   public LookupBindingPropertiesAttribute(string dataSource, string displayMember, string valueMember, string lookupMember);
-   public string DataSource { get; }
-   public string DisplayMember { get; }
-   public string LookupMember { get; }
-   public string ValueMember { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
- public class MarshalByValueComponent : IComponent, IDisposable, IServiceProvider {
-   public MarshalByValueComponent();
-   public virtual IContainer Container { get; }
-   public virtual bool DesignMode { get; }
-   protected EventHandlerList Events { get; }
-   public virtual ISite Site { get; set; }
-   public event EventHandler Disposed;
-   public void Dispose();
-   protected virtual void Dispose(bool disposing);
-   ~MarshalByValueComponent();
-   public virtual object GetService(Type service);
-   public override string ToString();
  }
- public class MaskedTextProvider : ICloneable {
-   public MaskedTextProvider(string mask);
-   public MaskedTextProvider(string mask, bool restrictToAscii);
-   public MaskedTextProvider(string mask, char passwordChar, bool allowPromptAsInput);
-   public MaskedTextProvider(string mask, CultureInfo culture);
-   public MaskedTextProvider(string mask, CultureInfo culture, bool restrictToAscii);
-   public MaskedTextProvider(string mask, CultureInfo culture, bool allowPromptAsInput, char promptChar, char passwordChar, bool restrictToAscii);
-   public MaskedTextProvider(string mask, CultureInfo culture, char passwordChar, bool allowPromptAsInput);
-   public bool AllowPromptAsInput { get; }
-   public bool AsciiOnly { get; }
-   public int AssignedEditPositionCount { get; }
-   public int AvailableEditPositionCount { get; }
-   public CultureInfo Culture { get; }
-   public static char DefaultPasswordChar { get; }
-   public int EditPositionCount { get; }
-   public IEnumerator EditPositions { get; }
-   public bool IncludeLiterals { get; set; }
-   public bool IncludePrompt { get; set; }
-   public static int InvalidIndex { get; }
-   public bool IsPassword { get; set; }
-   public int LastAssignedPosition { get; }
-   public int Length { get; }
-   public string Mask { get; }
-   public bool MaskCompleted { get; }
-   public bool MaskFull { get; }
-   public char PasswordChar { get; set; }
-   public char PromptChar { get; set; }
-   public bool ResetOnPrompt { get; set; }
-   public bool ResetOnSpace { get; set; }
-   public bool SkipLiterals { get; set; }
-   public char this[int index] { get; }
-   public bool Add(char input);
-   public bool Add(char input, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Add(string input);
-   public bool Add(string input, out int testPosition, out MaskedTextResultHint resultHint);
-   public void Clear();
-   public void Clear(out MaskedTextResultHint resultHint);
-   public object Clone();
-   public int FindAssignedEditPositionFrom(int position, bool direction);
-   public int FindAssignedEditPositionInRange(int startPosition, int endPosition, bool direction);
-   public int FindEditPositionFrom(int position, bool direction);
-   public int FindEditPositionInRange(int startPosition, int endPosition, bool direction);
-   public int FindNonEditPositionFrom(int position, bool direction);
-   public int FindNonEditPositionInRange(int startPosition, int endPosition, bool direction);
-   public int FindUnassignedEditPositionFrom(int position, bool direction);
-   public int FindUnassignedEditPositionInRange(int startPosition, int endPosition, bool direction);
-   public static bool GetOperationResultFromHint(MaskedTextResultHint hint);
-   public bool InsertAt(char input, int position);
-   public bool InsertAt(char input, int position, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool InsertAt(string input, int position);
-   public bool InsertAt(string input, int position, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool IsAvailablePosition(int position);
-   public bool IsEditPosition(int position);
-   public static bool IsValidInputChar(char c);
-   public static bool IsValidMaskChar(char c);
-   public static bool IsValidPasswordChar(char c);
-   public bool Remove();
-   public bool Remove(out int testPosition, out MaskedTextResultHint resultHint);
-   public bool RemoveAt(int position);
-   public bool RemoveAt(int startPosition, int endPosition);
-   public bool RemoveAt(int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Replace(char input, int position);
-   public bool Replace(char input, int position, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Replace(char input, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Replace(string input, int position);
-   public bool Replace(string input, int position, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Replace(string input, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint);
-   public bool Set(string input);
-   public bool Set(string input, out int testPosition, out MaskedTextResultHint resultHint);
-   public string ToDisplayString();
-   public override string ToString();
-   public string ToString(bool ignorePasswordChar);
-   public string ToString(bool includePrompt, bool includeLiterals);
-   public string ToString(bool ignorePasswordChar, bool includePrompt, bool includeLiterals, int startPosition, int length);
-   public string ToString(bool includePrompt, bool includeLiterals, int startPosition, int length);
-   public string ToString(bool ignorePasswordChar, int startPosition, int length);
-   public string ToString(int startPosition, int length);
-   public bool VerifyChar(char input, int position, out MaskedTextResultHint hint);
-   public bool VerifyEscapeChar(char input, int position);
-   public bool VerifyString(string input);
-   public bool VerifyString(string input, out int testPosition, out MaskedTextResultHint resultHint);
  }
- public enum MaskedTextResultHint {
-   AlphanumericCharacterExpected = -2,
-   AsciiCharacterExpected = -1,
-   CharacterEscaped = 1,
-   DigitExpected = -3,
-   InvalidInput = -51,
-   LetterExpected = -4,
-   NoEffect = 2,
-   NonEditPosition = -54,
-   PositionOutOfRange = -55,
-   PromptCharNotAllowed = -52,
-   SideEffect = 3,
-   SignedDigitExpected = -5,
-   Success = 4,
-   UnavailableEditPosition = -53,
-   Unknown = 0,
  }
  public abstract class MemberDescriptor {
    protected MemberDescriptor(MemberDescriptor descr);
    protected MemberDescriptor(MemberDescriptor oldMemberDescriptor, Attribute[] newAttributes);
    protected MemberDescriptor(string name);
    protected MemberDescriptor(string name, Attribute[] attributes);
    protected virtual Attribute[] AttributeArray { get; set; }
    public virtual AttributeCollection Attributes { get; }
    public virtual string Category { get; }
    public virtual string Description { get; }
    public virtual bool DesignTimeOnly { get; }
    public virtual string DisplayName { get; }
    public virtual bool IsBrowsable { get; }
    public virtual string Name { get; }
    protected virtual int NameHashCode { get; }
    protected virtual AttributeCollection CreateAttributeCollection();
    public override bool Equals(object obj);
    protected virtual void FillAttributes(IList attributeList);
    protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType);
    protected static MethodInfo FindMethod(Type componentClass, string name, Type[] args, Type returnType, bool publicOnly);
    public override int GetHashCode();
    protected virtual object GetInvocationTarget(Type type, object instance);
-   protected static object GetInvokee(Type componentClass, object component);
    protected static ISite GetSite(object component);
  }
  public sealed class MergablePropertyAttribute : Attribute {
    public static readonly MergablePropertyAttribute Default;
    public static readonly MergablePropertyAttribute No;
    public static readonly MergablePropertyAttribute Yes;
    public MergablePropertyAttribute(bool allowMerge);
    public bool AllowMerge { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class MultilineStringConverter : TypeConverter {
    public MultilineStringConverter();
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
    public override bool GetPropertiesSupported(ITypeDescriptorContext context);
  }
- public class NestedContainer : Container, IContainer, IDisposable, INestedContainer {
-   public NestedContainer(IComponent owner);
-   public IComponent Owner { get; }
-   protected virtual string OwnerName { get; }
-   protected override ISite CreateSite(IComponent component, string name);
-   protected override void Dispose(bool disposing);
-   protected override object GetService(Type service);
  }
  public sealed class NotifyParentPropertyAttribute : Attribute {
    public static readonly NotifyParentPropertyAttribute Default;
    public static readonly NotifyParentPropertyAttribute No;
    public static readonly NotifyParentPropertyAttribute Yes;
    public NotifyParentPropertyAttribute(bool notifyParent);
    public bool NotifyParent { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class NullableConverter : TypeConverter {
    public NullableConverter(Type type);
    public Type NullableType { get; }
    public Type UnderlyingType { get; }
    public TypeConverter UnderlyingTypeConverter { get; }
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues);
    public override bool GetCreateInstanceSupported(ITypeDescriptorContext context);
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
    public override bool GetPropertiesSupported(ITypeDescriptorContext context);
    public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
    public override bool IsValid(ITypeDescriptorContext context, object value);
  }
  public sealed class ParenthesizePropertyNameAttribute : Attribute {
    public static readonly ParenthesizePropertyNameAttribute Default;
    public ParenthesizePropertyNameAttribute();
    public ParenthesizePropertyNameAttribute(bool needParenthesis);
    public bool NeedParenthesis { get; }
    public override bool Equals(object o);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class PasswordPropertyTextAttribute : Attribute {
-   public static readonly PasswordPropertyTextAttribute Default;
-   public static readonly PasswordPropertyTextAttribute No;
-   public static readonly PasswordPropertyTextAttribute Yes;
-   public PasswordPropertyTextAttribute();
-   public PasswordPropertyTextAttribute(bool password);
-   public bool Password { get; }
-   public override bool Equals(object o);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class ProgressChangedEventArgs : EventArgs {
    public ProgressChangedEventArgs(int progressPercentage, object userState);
    public int ProgressPercentage { get; }
    public object UserState { get; }
  }
  public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e);
  public class PropertyChangedEventArgs : EventArgs {
    public PropertyChangedEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
  public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);
  public class PropertyChangingEventArgs : EventArgs {
    public PropertyChangingEventArgs(string propertyName);
    public virtual string PropertyName { get; }
  }
  public delegate void PropertyChangingEventHandler(object sender, PropertyChangingEventArgs e);
  public abstract class PropertyDescriptor : MemberDescriptor {
    protected PropertyDescriptor(MemberDescriptor descr);
    protected PropertyDescriptor(MemberDescriptor descr, Attribute[] attrs);
    protected PropertyDescriptor(string name, Attribute[] attrs);
    public abstract Type ComponentType { get; }
    public virtual TypeConverter Converter { get; }
    public virtual bool IsLocalizable { get; }
    public abstract bool IsReadOnly { get; }
    public abstract Type PropertyType { get; }
    public DesignerSerializationVisibility SerializationVisibility { get; }
    public virtual bool SupportsChangeEvents { get; }
    public virtual void AddValueChanged(object component, EventHandler handler);
    public abstract bool CanResetValue(object component);
    protected object CreateInstance(Type type);
    public override bool Equals(object obj);
    protected override void FillAttributes(IList attributeList);
    public PropertyDescriptorCollection GetChildProperties();
    public PropertyDescriptorCollection GetChildProperties(Attribute[] filter);
    public PropertyDescriptorCollection GetChildProperties(object instance);
    public virtual PropertyDescriptorCollection GetChildProperties(object instance, Attribute[] filter);
    public virtual object GetEditor(Type editorBaseType);
    public override int GetHashCode();
    protected override object GetInvocationTarget(Type type, object instance);
    protected Type GetTypeFromName(string typeName);
    public abstract object GetValue(object component);
    protected internal EventHandler GetValueChangedHandler(object component);
    protected virtual void OnValueChanged(object component, EventArgs e);
    public virtual void RemoveValueChanged(object component, EventHandler handler);
    public abstract void ResetValue(object component);
    public abstract void SetValue(object component, object value);
    public abstract bool ShouldSerializeValue(object component);
  }
  public class PropertyDescriptorCollection : ICollection, IDictionary, IEnumerable, IList {
    public static readonly PropertyDescriptorCollection Empty;
    public PropertyDescriptorCollection(PropertyDescriptor[] properties);
    public PropertyDescriptorCollection(PropertyDescriptor[] properties, bool readOnly);
    public int Count { get; }
-   int System.Collections.ICollection.Count { get; }
    bool System.Collections.ICollection.IsSynchronized { get; }
    object System.Collections.ICollection.SyncRoot { get; }
    bool System.Collections.IDictionary.IsFixedSize { get; }
    bool System.Collections.IDictionary.IsReadOnly { get; }
    object System.Collections.IDictionary.this[object key] { get; set; }
    ICollection System.Collections.IDictionary.Keys { get; }
    ICollection System.Collections.IDictionary.Values { get; }
    bool System.Collections.IList.IsFixedSize { get; }
    bool System.Collections.IList.IsReadOnly { get; }
    object System.Collections.IList.this[int index] { get; set; }
    public virtual PropertyDescriptor this[int index] { get; }
    public virtual PropertyDescriptor this[string name] { get; }
    public int Add(PropertyDescriptor value);
    public void Clear();
    public bool Contains(PropertyDescriptor value);
    public void CopyTo(Array array, int index);
    public virtual PropertyDescriptor Find(string name, bool ignoreCase);
    public virtual IEnumerator GetEnumerator();
    public int IndexOf(PropertyDescriptor value);
    public void Insert(int index, PropertyDescriptor value);
    protected void InternalSort(IComparer sorter);
    protected void InternalSort(string[] names);
    public void Remove(PropertyDescriptor value);
    public void RemoveAt(int index);
    public virtual PropertyDescriptorCollection Sort();
    public virtual PropertyDescriptorCollection Sort(IComparer comparer);
    public virtual PropertyDescriptorCollection Sort(string[] names);
    public virtual PropertyDescriptorCollection Sort(string[] names, IComparer comparer);
    void System.Collections.IDictionary.Add(object key, object value);
-   void System.Collections.IDictionary.Clear();
    bool System.Collections.IDictionary.Contains(object key);
    IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator();
    void System.Collections.IDictionary.Remove(object key);
-   IEnumerator System.Collections.IEnumerable.GetEnumerator();
    int System.Collections.IList.Add(object value);
-   void System.Collections.IList.Clear();
    bool System.Collections.IList.Contains(object value);
    int System.Collections.IList.IndexOf(object value);
    void System.Collections.IList.Insert(int index, object value);
    void System.Collections.IList.Remove(object value);
-   void System.Collections.IList.RemoveAt(int index);
  }
- public class PropertyTabAttribute : Attribute {
-   public PropertyTabAttribute();
-   public PropertyTabAttribute(string tabClassName);
-   public PropertyTabAttribute(string tabClassName, PropertyTabScope tabScope);
-   public PropertyTabAttribute(Type tabClass);
-   public PropertyTabAttribute(Type tabClass, PropertyTabScope tabScope);
-   public Type[] TabClasses { get; }
-   protected string[] TabClassNames { get; }
-   public PropertyTabScope[] TabScopes { get; }
-   public bool Equals(PropertyTabAttribute other);
-   public override bool Equals(object other);
-   public override int GetHashCode();
-   protected void InitializeArrays(string[] tabClassNames, PropertyTabScope[] tabScopes);
-   protected void InitializeArrays(Type[] tabClasses, PropertyTabScope[] tabScopes);
  }
- public enum PropertyTabScope {
-   Component = 3,
-   Document = 2,
-   Global = 1,
-   Static = 0,
  }
  public sealed class ProvidePropertyAttribute : Attribute {
    public ProvidePropertyAttribute(string propertyName, string receiverTypeName);
    public ProvidePropertyAttribute(string propertyName, Type receiverType);
    public string PropertyName { get; }
    public string ReceiverTypeName { get; }
-   public override object TypeId { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public sealed class ReadOnlyAttribute : Attribute {
    public static readonly ReadOnlyAttribute Default;
    public static readonly ReadOnlyAttribute No;
    public static readonly ReadOnlyAttribute Yes;
    public ReadOnlyAttribute(bool isReadOnly);
    public bool IsReadOnly { get; }
    public override bool Equals(object value);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public class RecommendedAsConfigurableAttribute : Attribute {
-   public static readonly RecommendedAsConfigurableAttribute Default;
-   public static readonly RecommendedAsConfigurableAttribute No;
-   public static readonly RecommendedAsConfigurableAttribute Yes;
-   public RecommendedAsConfigurableAttribute(bool recommendedAsConfigurable);
-   public bool RecommendedAsConfigurable { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public class ReferenceConverter : TypeConverter {
-   public ReferenceConverter(Type type);
-   public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
-   public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
-   public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
-   public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
-   public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
-   public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
-   protected virtual bool IsValueAllowed(ITypeDescriptorContext context, object value);
  }
  public class RefreshEventArgs : EventArgs {
    public RefreshEventArgs(object componentChanged);
    public RefreshEventArgs(Type typeChanged);
    public object ComponentChanged { get; }
    public Type TypeChanged { get; }
  }
  public delegate void RefreshEventHandler(RefreshEventArgs e);
  public enum RefreshProperties {
    All = 1,
    None = 0,
    Repaint = 2,
  }
  public sealed class RefreshPropertiesAttribute : Attribute {
    public static readonly RefreshPropertiesAttribute All;
    public static readonly RefreshPropertiesAttribute Default;
    public static readonly RefreshPropertiesAttribute Repaint;
    public RefreshPropertiesAttribute(RefreshProperties refresh);
    public RefreshProperties RefreshProperties { get; }
    public override bool Equals(object value);
    public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public class RunInstallerAttribute : Attribute {
-   public static readonly RunInstallerAttribute Default;
-   public static readonly RunInstallerAttribute No;
-   public static readonly RunInstallerAttribute Yes;
-   public RunInstallerAttribute(bool runInstaller);
-   public bool RunInstaller { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
  public class RunWorkerCompletedEventArgs : AsyncCompletedEventArgs {
    public RunWorkerCompletedEventArgs(object result, Exception error, bool cancelled);
    public object Result { get; }
    public new object UserState { get; }
  }
  public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs e);
  public class SByteConverter : BaseNumberConverter {
    public SByteConverter();
  }
- public sealed class SettingsBindableAttribute : Attribute {
-   public static readonly SettingsBindableAttribute No;
-   public static readonly SettingsBindableAttribute Yes;
-   public SettingsBindableAttribute(bool bindable);
-   public bool Bindable { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
  }
  public class SingleConverter : BaseNumberConverter {
    public SingleConverter();
  }
  public class StringConverter : TypeConverter {
    public StringConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
  }
- public static class SyntaxCheck {
-   public static bool CheckMachineName(string value);
-   public static bool CheckPath(string value);
-   public static bool CheckRootedPath(string value);
  }
  public class TimeSpanConverter : TypeConverter {
    public TimeSpanConverter();
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
  }
- public class ToolboxItemAttribute : Attribute {
-   public static readonly ToolboxItemAttribute Default;
-   public static readonly ToolboxItemAttribute None;
-   public ToolboxItemAttribute(bool defaultType);
-   public ToolboxItemAttribute(string toolboxItemTypeName);
-   public ToolboxItemAttribute(Type toolboxItemType);
-   public Type ToolboxItemType { get; }
-   public string ToolboxItemTypeName { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool IsDefaultAttribute();
  }
- public sealed class ToolboxItemFilterAttribute : Attribute {
-   public ToolboxItemFilterAttribute(string filterString);
-   public ToolboxItemFilterAttribute(string filterString, ToolboxItemFilterType filterType);
-   public string FilterString { get; }
-   public ToolboxItemFilterType FilterType { get; }
-   public override object TypeId { get; }
-   public override bool Equals(object obj);
-   public override int GetHashCode();
-   public override bool Match(object obj);
-   public override string ToString();
  }
- public enum ToolboxItemFilterType {
-   Allow = 0,
-   Custom = 1,
-   Prevent = 2,
-   Require = 3,
  }
  public class TypeConverter {
    public TypeConverter();
    public virtual bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public bool CanConvertFrom(Type sourceType);
    public virtual bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public bool CanConvertTo(Type destinationType);
    public virtual object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public object ConvertFrom(object value);
    public object ConvertFromInvariantString(ITypeDescriptorContext context, string text);
    public object ConvertFromInvariantString(string text);
    public object ConvertFromString(ITypeDescriptorContext context, CultureInfo culture, string text);
    public object ConvertFromString(ITypeDescriptorContext context, string text);
    public object ConvertFromString(string text);
    public virtual object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public object ConvertTo(object value, Type destinationType);
    public string ConvertToInvariantString(ITypeDescriptorContext context, object value);
    public string ConvertToInvariantString(object value);
    public string ConvertToString(ITypeDescriptorContext context, CultureInfo culture, object value);
    public string ConvertToString(ITypeDescriptorContext context, object value);
    public string ConvertToString(object value);
    public object CreateInstance(IDictionary propertyValues);
    public virtual object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues);
    protected Exception GetConvertFromException(object value);
    protected Exception GetConvertToException(object value, Type destinationType);
    public bool GetCreateInstanceSupported();
    public virtual bool GetCreateInstanceSupported(ITypeDescriptorContext context);
    public PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value);
    public virtual PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
    public PropertyDescriptorCollection GetProperties(object value);
    public bool GetPropertiesSupported();
    public virtual bool GetPropertiesSupported(ITypeDescriptorContext context);
    public ICollection GetStandardValues();
    public virtual TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
    public bool GetStandardValuesExclusive();
    public virtual bool GetStandardValuesExclusive(ITypeDescriptorContext context);
    public bool GetStandardValuesSupported();
    public virtual bool GetStandardValuesSupported(ITypeDescriptorContext context);
    public virtual bool IsValid(ITypeDescriptorContext context, object value);
    public bool IsValid(object value);
    protected PropertyDescriptorCollection SortProperties(PropertyDescriptorCollection props, string[] names);
    protected abstract class SimplePropertyDescriptor : PropertyDescriptor {
      protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType);
      protected SimplePropertyDescriptor(Type componentType, string name, Type propertyType, Attribute[] attributes);
      public override Type ComponentType { get; }
      public override bool IsReadOnly { get; }
      public override Type PropertyType { get; }
      public override bool CanResetValue(object component);
      public override void ResetValue(object component);
      public override bool ShouldSerializeValue(object component);
    }
    public class StandardValuesCollection : ICollection, IEnumerable {
      public StandardValuesCollection(ICollection values);
      public int Count { get; }
-     int System.Collections.ICollection.Count { get; }
      bool System.Collections.ICollection.IsSynchronized { get; }
      object System.Collections.ICollection.SyncRoot { get; }
      public object this[int index] { get; }
      public void CopyTo(Array array, int index);
      public IEnumerator GetEnumerator();
-     void System.Collections.ICollection.CopyTo(Array array, int index);
-     IEnumerator System.Collections.IEnumerable.GetEnumerator();
    }
  }
  public sealed class TypeConverterAttribute : Attribute {
    public static readonly TypeConverterAttribute Default;
    public TypeConverterAttribute();
    public TypeConverterAttribute(string typeName);
    public TypeConverterAttribute(Type type);
    public string ConverterTypeName { get; }
    public override bool Equals(object obj);
    public override int GetHashCode();
  }
  public abstract class TypeDescriptionProvider {
    protected TypeDescriptionProvider();
    protected TypeDescriptionProvider(TypeDescriptionProvider parent);
    public virtual object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args);
    public virtual IDictionary GetCache(object instance);
    public virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance);
    protected internal virtual IExtenderProvider[] GetExtenderProviders(object instance);
    public virtual string GetFullComponentName(object component);
    public Type GetReflectionType(object instance);
    public Type GetReflectionType(Type objectType);
    public virtual Type GetReflectionType(Type objectType, object instance);
    public virtual Type GetRuntimeType(Type reflectionType);
    public ICustomTypeDescriptor GetTypeDescriptor(object instance);
    public ICustomTypeDescriptor GetTypeDescriptor(Type objectType);
    public virtual ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance);
    public virtual bool IsSupportedType(Type type);
  }
  public sealed class TypeDescriptionProviderAttribute : Attribute {
    public TypeDescriptionProviderAttribute(string typeName);
    public TypeDescriptionProviderAttribute(Type type);
    public string TypeName { get; }
  }
  public sealed class TypeDescriptor {
-   public static IComNativeDescriptorHandler ComNativeDescriptorHandler { get; set; }
-   public static Type ComObjectType { get; }
    public static Type InterfaceType { get; }
    public static event RefreshEventHandler Refreshed;
    public static TypeDescriptionProvider AddAttributes(object instance, params Attribute[] attributes);
    public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[] attributes);
    public static void AddEditorTable(Type editorBaseType, Hashtable table);
    public static void AddProvider(TypeDescriptionProvider provider, object instance);
    public static void AddProvider(TypeDescriptionProvider provider, Type type);
    public static void AddProviderTransparent(TypeDescriptionProvider provider, object instance);
    public static void AddProviderTransparent(TypeDescriptionProvider provider, Type type);
    public static void CreateAssociation(object primary, object secondary);
-   public static IDesigner CreateDesigner(IComponent component, Type designerBaseType);
    public static EventDescriptor CreateEvent(Type componentType, EventDescriptor oldEventDescriptor, params Attribute[] attributes);
    public static EventDescriptor CreateEvent(Type componentType, string name, Type type, params Attribute[] attributes);
    public static object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args);
    public static PropertyDescriptor CreateProperty(Type componentType, PropertyDescriptor oldPropertyDescriptor, params Attribute[] attributes);
    public static PropertyDescriptor CreateProperty(Type componentType, string name, Type type, params Attribute[] attributes);
    public static object GetAssociation(Type type, object primary);
    public static AttributeCollection GetAttributes(object component);
    public static AttributeCollection GetAttributes(object component, bool noCustomTypeDesc);
    public static AttributeCollection GetAttributes(Type componentType);
    public static string GetClassName(object component);
    public static string GetClassName(object component, bool noCustomTypeDesc);
    public static string GetClassName(Type componentType);
    public static string GetComponentName(object component);
    public static string GetComponentName(object component, bool noCustomTypeDesc);
    public static TypeConverter GetConverter(object component);
    public static TypeConverter GetConverter(object component, bool noCustomTypeDesc);
    public static TypeConverter GetConverter(Type type);
    public static EventDescriptor GetDefaultEvent(object component);
    public static EventDescriptor GetDefaultEvent(object component, bool noCustomTypeDesc);
    public static EventDescriptor GetDefaultEvent(Type componentType);
    public static PropertyDescriptor GetDefaultProperty(object component);
    public static PropertyDescriptor GetDefaultProperty(object component, bool noCustomTypeDesc);
    public static PropertyDescriptor GetDefaultProperty(Type componentType);
    public static object GetEditor(object component, Type editorBaseType);
    public static object GetEditor(object component, Type editorBaseType, bool noCustomTypeDesc);
    public static object GetEditor(Type type, Type editorBaseType);
    public static EventDescriptorCollection GetEvents(object component);
    public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes);
    public static EventDescriptorCollection GetEvents(object component, Attribute[] attributes, bool noCustomTypeDesc);
    public static EventDescriptorCollection GetEvents(object component, bool noCustomTypeDesc);
    public static EventDescriptorCollection GetEvents(Type componentType);
    public static EventDescriptorCollection GetEvents(Type componentType, Attribute[] attributes);
    public static string GetFullComponentName(object component);
    public static PropertyDescriptorCollection GetProperties(object component);
    public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes);
    public static PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes, bool noCustomTypeDesc);
    public static PropertyDescriptorCollection GetProperties(object component, bool noCustomTypeDesc);
    public static PropertyDescriptorCollection GetProperties(Type componentType);
    public static PropertyDescriptorCollection GetProperties(Type componentType, Attribute[] attributes);
    public static TypeDescriptionProvider GetProvider(object instance);
    public static TypeDescriptionProvider GetProvider(Type type);
    public static Type GetReflectionType(object instance);
    public static Type GetReflectionType(Type type);
    public static void Refresh(object component);
    public static void Refresh(Assembly assembly);
    public static void Refresh(Module module);
    public static void Refresh(Type type);
    public static void RemoveAssociation(object primary, object secondary);
    public static void RemoveAssociations(object primary);
    public static void RemoveProvider(TypeDescriptionProvider provider, object instance);
    public static void RemoveProvider(TypeDescriptionProvider provider, Type type);
    public static void RemoveProviderTransparent(TypeDescriptionProvider provider, object instance);
    public static void RemoveProviderTransparent(TypeDescriptionProvider provider, Type type);
    public static void SortDescriptorArray(IList infos);
  }
  public abstract class TypeListConverter : TypeConverter {
    protected TypeListConverter(Type[] types);
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
    public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
  }
  public class UInt16Converter : BaseNumberConverter {
    public UInt16Converter();
  }
  public class UInt32Converter : BaseNumberConverter {
    public UInt32Converter();
  }
  public class UInt64Converter : BaseNumberConverter {
    public UInt64Converter();
  }
- public class WarningException : SystemException {
-   public WarningException();
-   protected WarningException(SerializationInfo info, StreamingContext context);
-   public WarningException(string message);
-   public WarningException(string message, Exception innerException);
-   public WarningException(string message, string helpUrl);
-   public WarningException(string message, string helpUrl, string helpTopic);
-   public string HelpTopic { get; }
-   public string HelpUrl { get; }
-   public override void GetObjectData(SerializationInfo info, StreamingContext context);
  }
  public class Win32Exception : ExternalExceptionException, ISerializable {
    public Win32Exception();
    public Win32Exception(int error);
    public Win32Exception(int error, string message);
-   protected Win32Exception(SerializationInfo info, StreamingContext context);
    public Win32Exception(string message);
    public Win32Exception(string message, Exception innerException);
    public int NativeErrorCode { get; }
-   public override void GetObjectData(SerializationInfo info, StreamingContext context);
  }
 }
justinvp commented 8 years ago
+    public interface INotifyPropertyChanged {
+        event PropertyChangedEventHandler PropertyChanged;
+    }

Maybe I'm reading the proposal incorrectly, but isn't INotifyPropertyChanged already in .NET Core?

https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.ObjectModel/src/System/ComponentModel/INotifyPropertyChanged.cs

https://github.com/dotnet/corefx/blob/ac67ffac987d0c27236c4a6cf1255c2bcbc7fe7d/src/System.ObjectModel/ref/System.ObjectModel.cs#L173-L176

chlowell commented 8 years ago

You're correct, thank you. I missed that assembly while building the diffs. I've removed the types in System.ObjectModel from the proposed additions.

justinvp commented 8 years ago

Some comments on the proposed collections:

+    public class AttributeCollection : ICollection, IEnumerable {
+        public static readonly AttributeCollection Empty;
+        protected AttributeCollection();
+        public AttributeCollection(params Attribute[] attributes);
+        protected virtual Attribute[] Attributes { get; }
+        public int Count { get; }
+        int System.Collections.ICollection.Count { get; }
         ^ Since there is a public `Count` property, there's no need
         | to add this explicitly implemented member to .NET Core.
+        bool System.Collections.ICollection.IsSynchronized { get; }
+        object System.Collections.ICollection.SyncRoot { get; }
+        public virtual Attribute this[int index] { get; }
+        public virtual Attribute this[Type attributeType] { get; }
+        public bool Contains(Attribute attribute);
+        public bool Contains(Attribute[] attributes);
+        public void CopyTo(Array array, int index);
         ^ Should this `CopyTo` be implemented explicitly? For example, other older collections
         | like `System.Text.RegularExpressions.MatchCollection` implement `CopyTo(Array, int)` explicitly (private)
         | in .NET Core, whereas it is public in the full framework. This would open the door to adding
         | a strongly-typed `public void CopyTo(Attribute[] array, int index)` in the future without
         | the baggage of a weaker-typed public `CopyTo` overload.
+        public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[] newAttributes);
+        protected Attribute GetDefaultAttribute(Type attributeType);
+        public IEnumerator GetEnumerator();
+        public bool Matches(Attribute attribute);
+        public bool Matches(Attribute[] attributes);
+        IEnumerator System.Collections.IEnumerable.GetEnumerator();
         ^ Since there is a public `GetEnumerator` method, there's no need
         | to add this explicitly implemented member to .NET Core.
+    }

Same feedback applies to the other proposed collections.

TylerBrinkley commented 8 years ago

Thanks for posting this issue, I'd greatly appreciate seeing the DescriptionAttribute added as it's the only true portability issue for my enum utility library.

chlowell commented 8 years ago

In yesterday's API review (dotnet/apireviews#32) we decided to add DescriptionAttribute as well.

TylerBrinkley commented 8 years ago

:+1: Awesome, that's great news.

twsouthwick commented 8 years ago

I've created a dev/typedescriptor branch for this work

LunicLynx commented 8 years ago

Just watched the Video. Just wanted to give some information where the TypeDescriptor is commonly used, besides the Designer. Most DataGrid implementations are using this infrastructure to get Information about the data to show, probably because of DataSet, DataTable and so on. WPF Bindings are using it! Also MVC x -5 use these to reflect the meta data from the objects, but in that case only the typebased implementation not the instance based one. See also: [1]

My guess (and also why i would like to see it in corefx) why this is used so much is, that it is the only Framework supported contract for getting metadata from an object that not necessarly exists as concrete type. I tried other ways to achieve the same solution but they don't work, even though you can try to implement your own Type (as Type is abstract and public) the code doesn't behave the way you want it to.

I would like to see an official API that can be used to reflect information about object that does not exists as Types directly. Otherwise you often need to compile these types into dynamic assemblies and then reflect them again, which ist a lot of overhead, if this happens often.

[1] http://aspnetwebstack.codeplex.com/workitem/1523

LunicLynx commented 8 years ago

This is especially important for instance based implementations.

This Model for example

class EntityType{ public string Name {get;set; } public Collection Fields {get;set; } }

class EntityField { public string Type {get;set;} public string Name {get;set;} }

public class Entity{ public EntityType Type {get;set;} public Dictionary<string,object> Data {get;set;} }

To make it show up in an Win Forms or WPF i just implement and Instance based TypeDescriptor and it magically works as if it was a Type with real properties etc.

chlowell commented 8 years ago

We've started implementing these APIs. You can see the work in progress on the dev/typedescriptor branch. Do you often use TypeDescriptor outside of Forms, WPF, or MVC scenarios?

LunicLynx commented 8 years ago

I wouldn't say often, but i think its a good concept to write code not against reflection itself but against TypeDescriptor and have a reflecting TypeDescriptor instead, this allows for really flexible code and use cases of your framework or components. WPF Binding is a really good example of how this scales to custom dynamic objects. On the other hand i don't think TypeDescriptor was designed for this, it just happend to be. So i would welcome a rehaul of its API but think all in all the concept really should be in the core framework.