Прочитать на английском

Поделиться через


IComponent Интерфейс

Определение

Предоставляет функции, необходимые для всех компонентов.

[System.ComponentModel.TypeConverter("System.ComponentModel.ComponentConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
public interface IComponent : IDisposable
public interface IComponent : IDisposable
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ComponentConverter))]
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComponent : IDisposable
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как реализовать IComponentинтерфейсы , ISiteи IContainer .

/// <summary>
/// The following example demonstrates the implementation of 
/// ISite, IComponent, and IContainer for use in a simple library container.
///
/// This example uses the System, System.ComponentModel, and System.Collections
/// namespaces.
/// </summary>

//This code segment implements the ISite and IComponent interfaces.
//The implementation of the IContainer interface can be seen in the documentation 
//of IContainer.

//Implement the ISite interface.

// The ISBNSite class represents the ISBN name of the book component
class ISBNSite : ISite
{
    private IComponent m_curComponent;
    private IContainer m_curContainer;
    private bool m_bDesignMode;
    private string m_ISBNCmpName;

    public ISBNSite(IContainer actvCntr, IComponent prntCmpnt)
    {
        m_curComponent = prntCmpnt;
        m_curContainer = actvCntr;
        m_bDesignMode = false;
        m_ISBNCmpName = null;
    }

    //Support the ISite interface.
    public virtual IComponent Component
    {
        get
        {
            return m_curComponent;
        }
    }

    public virtual IContainer Container
    {
        get
        {
            return m_curContainer;
        }
    }
    
    public virtual bool DesignMode
    {
        get
        {
            return m_bDesignMode;
        }
    }

    public virtual string Name
    {
        get
        {
            return m_ISBNCmpName;
        }

        set
        {
            m_ISBNCmpName = value;
        }
    }

    //Support the IServiceProvider interface.
    public virtual object GetService(Type serviceType)
    {
        //This example does not use any service object.
        return null;
    }
}

// The BookComponent class represents the book component of the library container.

// This class implements the IComponent interface.

class BookComponent : IComponent
{
    public event EventHandler Disposed;
    private ISite m_curISBNSite;
    private string m_bookTitle;
    private string m_bookAuthor;

    public BookComponent(string Title, string Author)
    {
        m_curISBNSite = null;
        Disposed = null;
        m_bookTitle = Title;
        m_bookAuthor = Author;
    }

    public string Title
    {
        get
        {
            return m_bookTitle;
        }
    }

    public string Author
    {
        get
        {
            return m_bookAuthor;
        }
    }

    public virtual void Dispose()
    {	
        //There is nothing to clean.
        if(Disposed != null)
            Disposed(this,EventArgs.Empty);
    }

    public virtual ISite Site
    {
        get
        {
            return m_curISBNSite;
        }
        set
        {
            m_curISBNSite = value;
        }
    }

    public override bool Equals(object cmp)
    {
        BookComponent cmpObj = (BookComponent)cmp;
        if(this.Title.Equals(cmpObj.Title) && this.Author.Equals(cmpObj.Author))
            return true;

        return false;
    }

    public override int GetHashCode()
    {
        return base.GetHashCode();
    }
}

Комментарии

Component — это реализация IComponent по умолчанию и служит базовым классом для всех компонентов в среде CLR.

Компоненты можно содержать в контейнере. В этом контексте автономное содержимое относится к логическому, а не визуальному. Компоненты и контейнеры можно использовать в различных сценариях, как визуальных, так и не визуальных.

System.Windows.Forms.Control наследуется от Component, реализация IComponentпо умолчанию .

Компонент взаимодействует со своим контейнером в основном через предоставленный ISiteконтейнер , который представляет собой репозиторий сведений о конкретном контейнере для каждого компонента.

Примечания для тех, кто реализует этот метод

Чтобы быть компонентом, класс должен реализовать IComponent интерфейс и предоставить базовый конструктор, который не требует параметров или один параметр типа IContainer.

Свойства

Site

Возвращает или задает объект ISite, связанный с объектом IComponent.

Методы

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

(Унаследовано от IDisposable)

События

Disposed

Представляет метод, обрабатывающий событие Disposed компонента.

Применяется к

См. также раздел