次の方法で共有


CompositionContainer クラス

定義

パーツの合成を管理します。

public ref class CompositionContainer : System::ComponentModel::Composition::Hosting::ExportProvider, IDisposable, System::ComponentModel::Composition::ICompositionService
public class CompositionContainer : System.ComponentModel.Composition.Hosting.ExportProvider, IDisposable, System.ComponentModel.Composition.ICompositionService
type CompositionContainer = class
    inherit ExportProvider
    interface ICompositionService
    interface IDisposable
Public Class CompositionContainer
Inherits ExportProvider
Implements ICompositionService, IDisposable
継承
CompositionContainer
実装

次の例では、 CompositionContainer オブジェクトはカタログで初期化され、パーツのインポートを埋めるために使用されます。 この例では、属性プログラミング モデルを使用します。

[Export]
class MyAddin
{
    public String myData { get { return "The data!"; } }
}

class MyProgram
{
    [Import]
    public MyAddin myAddin { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        AggregateCatalog catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
        CompositionContainer _container = new CompositionContainer(catalog);
        MyProgram myProgram = new MyProgram();
        _container.SatisfyImportsOnce(myProgram);
        Console.WriteLine(myProgram.myAddin.myData);
        Console.ReadLine();

        _container.Dispose();
    }
}
<Export()>
Public Class MyAddin
    Public ReadOnly Property theData As String
        Get
            Return "The Data!"
        End Get
    End Property
End Class

Public Class MyProgam
    Private _MyAddin As MyAddin

    <Import()>
    Public Property MyAddinProperty As MyAddin
        Get
            Return _MyAddin
        End Get
        Set(ByVal value As MyAddin)
            _MyAddin = value
        End Set
    End Property

End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyAddin).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim theProgam As MyProgam = New MyProgam()
    container.SatisfyImportsOnce(theProgam)
    Console.WriteLine(theProgam.MyAddinProperty.theData)
    Console.ReadLine()

    container.Dispose()

End Sub

注釈

オブジェクトは CompositionContainer 、アプリケーションで 2 つの主な目的を果たします。 まず、コンポジションに使用できるパーツとその依存関係を追跡し、使用可能なパーツのセットが変更されるたびにコンポジションを実行します。 次に、アプリケーションが構成済みパーツのインスタンスを取得するか、コンポーザブル パーツの依存関係を埋めるメソッドを提供します。

重要

この型は IDisposable インターフェイスを実装します。 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。 直接的に型を破棄するには、try/catch ブロック内で Dispose メソッドを呼び出します。 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。

パーツは、コンテナーで直接、または プロパティを Catalog 使用して使用できます。 この ComposablePartCatalog で検出可能なすべてのパーツは、直接追加されたパーツと共に、インポートを満たすためにコンテナーで使用できます。

Composeメソッドを使用すると、インスタンス化された部分を既存のコンテナーに追加できます。 コンポジションが成功したと仮定すると、これらのパーツのインポートにはコンテナーから取得されたパーツが格納され、エクスポートは他のパーツで使用できるようになります。 再コンパイル可能としてマークされたインポートは、再コンパイル用に登録されます。

SatisfyImportsOnceメソッドを使用すると、コンテナーに追加されることなく、パーツのインポートを塗りつぶすことができます。 コンポジションが成功した場合、パーツのインポートは入力されますが、パーツのエクスポートは他のパーツでは使用できなくなり、再合成のインポートは登録されません。

CompositionContainer オブジェクトは常に破棄する必要があります。 メソッドが Dispose 呼び出されると、 CompositionContainer オブジェクトは作成したすべての部分も破棄します。

CompositionContainerコンストラクターを使用して、 パラメーターを にtrue設定して、複数のisThreadSafeスレッドからアクセスできる オブジェクトを構築するCompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])必要があります。 が trueの場合isThreadSafe、パフォーマンスは若干低下するため、シングルスレッドシナリオではこのパラメーターを にfalse設定することをお勧めします。 既定値は、false です。

警告

CompositionContainer 、それ自体、またはその参照を持つパーツをインポートしないでください。 このような参照により、信頼されていないパーツがコンテナー内のすべてのパーツにアクセスできる可能性があります。

コンストラクター

CompositionContainer()

CompositionContainer クラスの新しいインスタンスを初期化します。

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

カタログとエクスポート プロバイダーを指定して、スレッド セーフ モードで CompositionContainer クラスの新しいインスタンスを初期化します。

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

指定したカタログ、オプション、およびエクスポート プロバイダーを使用して、CompositionContainer クラスの新しいインスタンスを初期化します。

CompositionContainer(ComposablePartCatalog, ExportProvider[])

カタログとエクスポート プロバイダーを指定して、CompositionContainer クラスの新しいインスタンスを初期化します。

CompositionContainer(CompositionOptions, ExportProvider[])

指定したエクスポート プロバイダーとオプションを使用して、CompositionContainer クラスの新しいインスタンスを初期化します。

CompositionContainer(ExportProvider[])

エクスポート プロバイダーを指定して、CompositionContainer クラスの新しいインスタンスを初期化します。

プロパティ

Catalog

ComposablePartCatalog オブジェクトへのコンテナー アクセスを提供する Export を取得します。

Providers

追加の ComposablePartCatalog オブジェクトへのコンテナー アクセスを提供するエクスポート プロバイダーを取得します。

メソッド

Compose(CompositionBatch)

コンテナーで指定した CompositionBatch 内のパーツを追加または削除して、合成を実行します。

Dispose()

CompositionContainer クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

Dispose(Boolean)

CompositionContainer によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetExport<T,TMetadataView>()

指定した型パラメーターから派生したコントラクト名を持つエクスポートを返します。 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExport<T,TMetadataView>(String)

指定したコントラクト名を持つエクスポートを返します。 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExport<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポートを返します。 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExport<T>(String)

指定したコントラクト名を持つエクスポートを返します。 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExportedValue<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポート オブジェクトを返します。 一致するエクスポート オブジェクトが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExportedValue<T>(String)

指定したコントラクト名を持つエクスポート オブジェクトを返します。 一致するエクスポート オブジェクトが 1 つだけある場合以外は、例外がスローされます。

(継承元 ExportProvider)
GetExportedValueOrDefault<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポート オブジェクト、または指定した型の既定値を取得します。一致するエクスポート オブジェクトが複数ある場合は、例外がスローされます。

(継承元 ExportProvider)
GetExportedValueOrDefault<T>(String)

指定したコントラクト名を持つエクスポート オブジェクト、または指定した型の既定値を取得します。一致するエクスポート オブジェクトが複数ある場合は、例外がスローされます。

(継承元 ExportProvider)
GetExportedValues<T>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポート オブジェクトを取得します。

(継承元 ExportProvider)
GetExportedValues<T>(String)

指定したコントラクト名を持つすべてのエクスポート オブジェクトを取得します。

(継承元 ExportProvider)
GetExports(ImportDefinition)

指定したインポート定義の条件に一致するすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

指定されたインポート定義および合成の条件に一致するすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports(Type, Type, String)

指定したコントラクト名を持つすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports<T,TMetadataView>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports<T,TMetadataView>(String)

指定したコントラクト名を持つすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports<T>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExports<T>(String)

指定したコントラクト名を持つすべてのエクスポートを取得します。

(継承元 ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

指定した ImportDefinition オブジェクトの条件に一致するすべてのエクスポートのコレクションを返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnExportsChanged(ExportsChangeEventArgs)

ExportsChanged イベントを発生させます。

(継承元 ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

ExportsChanging イベントを発生させます。

(継承元 ExportProvider)
ReleaseExport(Export)

指定した Export オブジェクトを CompositionContainer から解放します。

ReleaseExport<T>(Lazy<T>)

指定したエクスポートを合成から削除し、可能な場合はそのリソースを解放します。

ReleaseExports(IEnumerable<Export>)

Export オブジェクトのセットを CompositionContainer から解放します。

ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>)

エクスポートのコレクションを合成から削除し、可能な場合はそれらのリソースを解放します。

ReleaseExports<T>(IEnumerable<Lazy<T>>)

エクスポートのコレクションを合成から削除し、可能な場合はそれらのリソースを解放します。

SatisfyImportsOnce(ComposablePart)

指定した ComposablePart オブジェクトのインポートを、再合成の対象としては登録せずに満たします。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

指定されたインポートの条件に一致するすべてのエクスポートを取得します。

(継承元 ExportProvider)

イベント

ExportsChanged

ExportProvider 内のエクスポートが変更されたときに発生します。

(継承元 ExportProvider)
ExportsChanging

提供されるエクスポートが変更されているときに発生します。

(継承元 ExportProvider)

拡張メソッド

ComposeExportedValue<T>(CompositionContainer, T)

指定された値からパーツを作成し、指定された合成コンテナーで合成します。

ComposeExportedValue<T>(CompositionContainer, String, T)

指定されたオブジェクトから指定されたコントラクト名でパーツを作成し、指定された合成コンテナーで合成します。

ComposeParts(CompositionContainer, Object[])

属性付きオブジェクトの配列からコンポーザブル パーツを作成し、指定された合成コンテナーで合成します。

SatisfyImportsOnce(ICompositionService, Object)

再合成を無効にし、指定された合成サービスを使用して、指定されたパーツを合成します。

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

指定されたパーツを、再合成を無効にして、指定された合成サービスと指定されたリフレクション コンテキストを使用して合成します。

適用対象

こちらもご覧ください