英語で読む

次の方法で共有


IContainer インターフェイス

定義

コンテナーの機能を提供します。 コンテナーは、論理的に 0 個以上のコンポーネントを格納するオブジェクトです。

C#
public interface IContainer : IDisposable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IContainer : IDisposable
派生
属性
実装

IContainer インターフェイスの実装方法を示すコード例を次に示します。

C#
//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 ArgumentException("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 (ArgumentException e)
        {
            Console.WriteLine("Unable to add books: " + 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);
        }
    }
}

注釈

コンテナーは、0 個以上のコンポーネントをカプセル化して追跡するオブジェクトです。 このコンテキストでは、コンテインメントはビジュアルコンテインメントではなく論理コンテインメントを参照します。 コンポーネントとコンテナーは、ビジュアルとビジュアルの両方ではないシナリオなど、さまざまなシナリオで使用できます。

注意 (実装者)

コンテナーにするには、 クラスで インターフェイスを IContainer 実装する必要があります。このインターフェイスは、コンポーネントの追加、削除、および取得のためのメソッドをサポートします。

プロパティ

Components

IContainer 内のすべてのコンポーネントを取得します。

メソッド

Add(IComponent)

指定した IComponentIContainer のリストの末尾に追加します。

Add(IComponent, String)

指定した IComponentIContainer のリストの末尾に追加し、そのコンポーネントに名前を割り当てます。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

(継承元 IDisposable)
Remove(IComponent)

IContainer からコンポーネントを削除します。

適用対象

製品 バージョン
.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

こちらもご覧ください