IComponent Rozhraní

Definice

Poskytuje funkce vyžadované všemi komponentami.

[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
Odvozené
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje, jak implementovat IComponentrozhraní , ISitea 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();
    }
}

Poznámky

Component je výchozí implementace IComponent a slouží jako základní třída pro všechny komponenty v modulu CLR (Common Language Runtime).

V kontejneru můžete obsahovat komponenty. V tomto kontextu omezení odkazuje na logické uzavření, nikoli na vizuální uzavření. Komponenty a kontejnery můžete použít v různých scénářích, a to jak vizuálních, tak i jiných.

System.Windows.Forms.Controldědí z Component, výchozí implementace .IComponent

Komponenta komunikuje se svým kontejnerem primárně prostřednictvím kontejneru poskytovaného ISite, což je úložiště informací o jednotlivých komponentách specifických pro jednotlivé kontejnery.

Poznámky pro implementátory

Aby byla součástí, musí třída implementovat IComponent rozhraní a poskytnout základní konstruktor, který nevyžaduje žádné parametry nebo jeden parametr typu IContainer.

Vlastnosti

Site

Získá nebo nastaví přidruženou ISite k IComponent.

Metody

Dispose()

Provede aplikací definované úlohy spojené s uvolněním nebo resetováním nespravovaných prostředků.

(Zděděno od IDisposable)

Událost

Disposed

Představuje metodu, která zpracovává Disposed událost komponenty.

Platí pro

Viz také