IComponent 介面

定義

提供所有元件所需的功能。

C#
[System.ComponentModel.TypeConverter("System.ComponentModel.ComponentConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
public interface IComponent : IDisposable
C#
public interface IComponent : IDisposable
C#
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ComponentConverter))]
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComponent : IDisposable
衍生
屬性
實作

範例

下列程式代碼範例示範如何實作 IComponentISiteIContainer 介面。

C#
/// <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 作,可作為 Common Language Runtime 中所有元件的基類。

您可以在容器中包含元件。 在此內容中,內含專案是指邏輯內含專案,而非視覺內含專案。 您可以在各種案例中使用元件和容器,包括視覺和非視覺效果。

System.Windows.Forms.Control 繼承自 Component,這是的默認實作 IComponent

元件主要透過容器提供的 ISite來與其容器互動,這是容器特定個別元件資訊的存放庫。

給實施者的注意事項

若要成為元件,類別必須實 IComponent 作 介面,並提供基本建構函式,不需要任何參數或類型的 IContainer單一參數。

屬性

Site

取得或設定與 ISite 相關聯的 IComponent

方法

Dispose()

執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。

(繼承來源 IDisposable)

事件

Disposed

表示處理元件的 Disposed 事件的方法。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另請參閱