英語で読む

次の方法で共有


ISite インターフェイス

定義

サイトに必要な機能を提供します。

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

次の例では、ライブラリ コンテナーで使用する 、IComponentIContainer の実装ISiteを示します。

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

注釈

サイトは Component 、 を に Container バインドし、それらの間の通信を有効にするだけでなく、コンテナーがそのコンポーネントを管理する方法を提供します。

サイトは、コンポーネント名などのコンテナー固有のコンポーネントごとの情報のリポジトリとしても機能します。

注意 (実装者)

サイトにするには、 クラスで インターフェイスを実装する ISite 必要があります。

プロパティ

Component

クラスによって実装される場合は、ISite に関連付けられているコンポーネントを取得します。

Container

クラスによって実装される場合は、IContainer に関連付けられている ISite を取得します。

DesignMode

クラスによって実装される場合に、コンポーネントがデザイン モードかどうかを判断します。

Name

クラスによって実装される場合は、ISite に関連付けられているコンポーネントの名前を取得または設定します。

メソッド

GetService(Type)

指定した型のサービス オブジェクトを取得します。

(継承元 IServiceProvider)

拡張メソッド

GetKeyedService<T>(IServiceProvider, Object)

から 型 T のサービスを取得します IServiceProvider

GetKeyedServices(IServiceProvider, Type, Object)

から 型 serviceType のサービスの列挙体を取得します IServiceProvider

GetKeyedServices<T>(IServiceProvider, Object)

から 型 T のサービスの列挙体を取得します IServiceProvider

GetRequiredKeyedService(IServiceProvider, Type, Object)

から 型 serviceType のサービスを取得します IServiceProvider

GetRequiredKeyedService<T>(IServiceProvider, Object)

から 型 T のサービスを取得します IServiceProvider

CreateAsyncScope(IServiceProvider)

スコープ サービスを解決するために使用できる新しい AsyncServiceScope を作成します。

CreateScope(IServiceProvider)

スコープ サービスを解決するために使用できる新しい IServiceScope を作成します。

GetRequiredService(IServiceProvider, Type)

IServiceProvider から serviceType 型のサービスを取得します。

GetRequiredService<T>(IServiceProvider)

IServiceProvider から T 型のサービスを取得します。

GetService<T>(IServiceProvider)

IServiceProvider から T 型のサービスを取得します。

GetServices(IServiceProvider, Type)

IServiceProvider から serviceType 型のサービスの列挙体を取得します。

GetServices<T>(IServiceProvider)

IServiceProvider から T 型のサービスの列挙体を取得します。

GetFakeLogCollector(IServiceProvider)

偽のロガーに送信されたログ レコードを収集する オブジェクトを取得します。

GetFakeRedactionCollector(IServiceProvider)

依存関係挿入コンテナーから偽の redactor コレクター インスタンスを取得します。

適用対象

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

こちらもご覧ください