File: compmod\system\componentmodel\EventDescriptor.cs
Project: ndp\fx\src\System.csproj (System)
//------------------------------------------------------------------------------
// <copyright file="EventDescriptor.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------
 
/*
 */
namespace System.ComponentModel {
 
    using System;
    using System.Diagnostics;
    using System.Reflection;
    using System.Security.Permissions;
 
    /// <devdoc>
    ///    <para>
    ///       Provides a description
    ///       of an event.
    ///    </para>
    /// </devdoc>
    [HostProtection(SharedState = true)]
    [System.Runtime.InteropServices.ComVisible(true)]
    public abstract class EventDescriptor : MemberDescriptor {
        /// <devdoc>
        ///    <para>
        ///       Initializes a new instance of the <see cref='System.ComponentModel.EventDescriptor'/> class with the
        ///       specified name and attribute
        ///       array.
        ///    </para>
        /// </devdoc>
        protected EventDescriptor(string name, Attribute[] attrs)
            : base(name, attrs) {
        }
        /// <devdoc>
        ///    <para>
        ///       Initializes a new instance of the <see cref='System.ComponentModel.EventDescriptor'/> class with the name and attributes in
        ///       the specified <see cref='System.ComponentModel.MemberDescriptor'/>
        ///       .
        ///    </para>
        /// </devdoc>
        protected EventDescriptor(MemberDescriptor descr)
            : base(descr) {
        }
        /// <devdoc>
        ///    <para>
        ///       Initializes a new instance of the <see cref='System.ComponentModel.EventDescriptor'/> class with
        ///       the name in the specified <see cref='System.ComponentModel.MemberDescriptor'/> and the
        ///       attributes in both the <see cref='System.ComponentModel.MemberDescriptor'/> and the <see cref='System.Attribute'/>
        ///       array.
        ///    </para>
        /// </devdoc>
        protected EventDescriptor(MemberDescriptor descr, Attribute[] attrs)
            : base(descr, attrs) {
        }
 
        /// <devdoc>
        ///    <para>
        ///       When overridden in a derived
        ///       class,
        ///       gets the type of the component this event is bound to.
        ///    </para>
        /// </devdoc>
        public abstract Type ComponentType { get; }
 
        /// <devdoc>
        ///    <para>
        ///       When overridden in a derived
        ///       class, gets the type of delegate for the event.
        ///    </para>
        /// </devdoc>
        public abstract Type EventType { get; }
 
        /// <devdoc>
        ///    <para>
        ///       When overridden in a derived class, gets a value
        ///       indicating whether the event delegate is a multicast
        ///       delegate.
        ///    </para>
        /// </devdoc>
        public abstract bool IsMulticast { get; }
 
        /// <devdoc>
        ///    <para>
        ///       When overridden in
        ///       a derived class,
        ///       binds the event to the component.
        ///    </para>
        /// </devdoc>
        public abstract void AddEventHandler(object component, Delegate value);
 
        /// <devdoc>
        ///    <para>
        ///       When
        ///       overridden
        ///       in a derived class, unbinds the delegate from the
        ///       component
        ///       so that the delegate will no
        ///       longer receive events from the component.
        ///    </para>
        /// </devdoc>
        public abstract void RemoveEventHandler(object component, Delegate value);
    }
}