Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

IContainer-Schnittstelle

Stellt Funktionen für Container bereit. Container sind Objekte, die logisch 0 oder mehr Komponenten enthalten.

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)

[ComVisibleAttribute(true)]
public interface IContainer : IDisposable

Der IContainer-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche EigenschaftComponentsRuft alle Komponenten im IContainer ab.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkAdd(IComponent)Fügt dem IContainer am Ende der Liste die angegebene IComponent hinzu.
Öffentliche MethodeUnterstützt von XNA FrameworkAdd(IComponent, String)Fügt dem IContainer am Ende der Liste die angegebene IComponent hinzu und weist der Komponente einen Namen zu.
Öffentliche MethodeUnterstützt von XNA FrameworkDisposeFührt anwendungsspezifische Aufgaben aus, die mit dem Freigeben, Zurückgeben oder Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. (Von IDisposable geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkRemoveEntfernt eine Komponente aus IContainer.
Zum Seitenanfang

Container sind Objekte, die 0 oder mehr Komponenten kapseln und verfolgen. In diesem Kontext bezieht sich Kapselung auf die logische Unterordnung, nicht auf die visuelle Einbettung. Sie können Komponenten und Container in verschiedenen Szenarien verwenden, einschließlich solcher mit visuellen und nicht visuellen Bestandteilen.

Hinweise zur Implementierung

Damit eine Klasse als Container gilt, muss sie die IContainer-Schnittstelle implementieren, die Methoden für das Hinzufügen, Entfernen und Abrufen von Komponenten unterstützt.

Im folgenden Codebeispiel wird die Implementierung der IContainer-Schnittstelle veranschaulicht.


	//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);
			}
		}
	}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft