IComponent Interface
Provides functionality required by all components.
Namespace: System.ComponentModel
Assembly: System (in System.dll)
The IComponent type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() | Dispose | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. (Inherited from IDisposable.) |
Component is the default implementation of IComponent and serves as the base class for all components in the common language runtime.
You can contain components in a container. In this context, containment refers to logical containment, not visual containment. You can use components and containers in a variety of scenarios, both visual and non visual.
System.Windows.Forms.Control inherits from Component, the default implementation of IComponent.
A component interacts with its container primarily through a container-provided ISite, which is a repository of container-specific per-component information.
Notes to ImplementersTo be a component, a class must implement the IComponent interface and provide a basic constructor that requires no parameters or a single parameter of type IContainer. For more information about implementing IComponent, see Programming with Components.
The following code example demonstrates how to implement the IComponent, ISite, and IContainer interfaces.
/// <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(); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.



