次の方法で共有


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 オブジェクトは、CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) コンストラクターを使用して、isThreadSafe パラメーターを trueに設定して構築する必要があります。 isThreadSafetrueされるとパフォーマンスが若干低下するため、シングルスレッドシナリオではこのパラメーターを 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

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

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, AtomicComposition)

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

(継承元 ExportProvider)
GetExports(ImportDefinition)

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

(継承元 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>)

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

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, ReflectionContext)

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

SatisfyImportsOnce(ICompositionService, Object)

再合成を無効にして、指定したコンポジション サービスを使用して、指定したパーツを作成します。

適用対象

こちらもご覧ください