IContainer Interface
Provides functionality for containers. Containers are objects that logically contain zero or more components.
Namespace: System.ComponentModel
Assembly: System (in System.dll)
The IContainer type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() | Add(IComponent) | Adds the specified IComponent to the IContainer at the end of the list. |
![]() ![]() | Add(IComponent, String) | Adds the specified IComponent to the IContainer at the end of the list, and assigns a name to the component. |
![]() ![]() | Dispose | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. (Inherited from IDisposable.) |
![]() ![]() | Remove | Removes a component from the IContainer. |
Containers are objects that encapsulate and track zero or more components. In this context, containment refers to logical containment, not visual containment. You can use components and containers in a variety of scenarios, including scenarios that are both visual and not visual.
Notes to ImplementersTo be a container, the class must implement the IContainer interface, which supports methods for adding, removing, and retrieving components.
The following code example demonstrates how to implement the IContainer interface.
//This code segment implements the IContainer interface. The code segment //containing the implementation of ISite and IComponent can be found in the documentation //for those interfaces. //Implement the LibraryContainer using the IContainer interface. class LibraryContainer : IContainer { private ArrayList m_bookList; public LibraryContainer() { m_bookList = new ArrayList(); } public virtual void Add(IComponent book) { //The book will be added without creation of the ISite object. m_bookList.Add(book); } public virtual void Add(IComponent book, string ISNDNNum) { for(int i =0; i < m_bookList.Count; ++i) { IComponent curObj = (IComponent)m_bookList[i]; if(curObj.Site != null) { if(curObj.Site.Name.Equals(ISNDNNum)) throw new SystemException("The ISBN number already exists in the container"); } } ISBNSite data = new ISBNSite(this, book); data.Name = ISNDNNum; book.Site = data; m_bookList.Add(book); } public virtual void Remove(IComponent book) { for(int i =0; i < m_bookList.Count; ++i) { if(book.Equals(m_bookList[i])) { m_bookList.RemoveAt(i); break; } } } public ComponentCollection Components { get { IComponent[] datalist = new BookComponent[m_bookList.Count]; m_bookList.CopyTo(datalist); return new ComponentCollection(datalist); } } public virtual void Dispose() { for(int i =0; i < m_bookList.Count; ++i) { IComponent curObj = (IComponent)m_bookList[i]; curObj.Dispose(); } m_bookList.Clear(); } static void Main(string[] args) { LibraryContainer cntrExmpl = new LibraryContainer(); try { BookComponent book1 = new BookComponent("Wizard's First Rule", "Terry Gooodkind"); cntrExmpl.Add(book1, "0812548051"); BookComponent book2 = new BookComponent("Stone of Tears", "Terry Gooodkind"); cntrExmpl.Add(book2, "0812548094"); BookComponent book3 = new BookComponent("Blood of the Fold", "Terry Gooodkind"); cntrExmpl.Add(book3, "0812551478"); BookComponent book4 = new BookComponent("The Soul of the Fire", "Terry Gooodkind"); //This will generate exception because the ISBN already exists in the container. cntrExmpl.Add(book4, "0812551478"); } catch(SystemException e) { Console.WriteLine("Error description: " + e.Message); } ComponentCollection datalist =cntrExmpl.Components; IEnumerator denum = datalist.GetEnumerator(); while(denum.MoveNext()) { BookComponent cmp = (BookComponent)denum.Current; Console.WriteLine("Book Title: " + cmp.Title); Console.WriteLine("Book Author: " + cmp.Author); Console.WriteLine("Book ISBN: " + cmp.Site.Name); } } }
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.


