CompositionContainer CompositionContainer CompositionContainer CompositionContainer Class

定義

パーツの合成を管理します。Manages the composition of parts.

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
継承
CompositionContainerCompositionContainerCompositionContainerCompositionContainer
実装

次の例では、 CompositionContainerオブジェクトがカタログで初期化され、パーツのインポートを設定するために使用されます。In the following example, a CompositionContainer object is initialized with a catalog and is used to fill the imports of a part. この例では、属性付きプログラミングモデルを使用します。This example uses the Attributed Programming Model.

[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つの主要な目的で機能します。A CompositionContainer object serves two major purposes in an application. まず、合成に使用できるパーツとその依存関係を追跡し、使用可能なパーツのセットが変更されるたびにコンポジションを実行します。First, it keeps track of which parts are available for composition and what their dependencies are, and performs composition whenever the set of available parts changes. 2つ目は、構成されたパーツのインスタンスをアプリケーションが取得したり、コンポーザブルパーツの依存関係を埋めるためのメソッドを提供します。Second, it provides the methods by which the application gets instances of composed parts or fills the dependencies of a composable part.

重要

この型は IDisposable インターフェイスを実装します。This type implements the IDisposable interface. 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。When you have finished using the type, you should dispose of it either directly or indirectly. 直接的に型を破棄するには、try / catch ブロック内で Dispose メソッドを呼び出します。To dispose of the type directly, call its Dispose method in a try/catch block. 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

パーツは、直接またはCatalogプロパティを使用してコンテナーに対して使用できます。Parts can be made available to the container either directly or through the Catalog property. このComposablePartCatalogで検出可能なすべての部分は、インポートを実行するためにコンテナーで使用できます。また、直接追加されたパーツと共に使用することもできます。All the parts discoverable in this ComposablePartCatalog are available to the container to fulfill imports, along with any parts added directly.

メソッドComposeを使用すると、インスタンス化されたパーツを既存のコンテナーに追加できます。The Compose method allows instantiated parts to be added to an existing container. 構成が成功したと仮定すると、これらの部分には、コンテナーから取得したパーツを含むインポートが格納され、そのエクスポートは他の部分で使用できるようになります。Assuming composition is successful, these parts will have their imports filled with parts retrieved from the container, and their exports will be available to other parts. 再合成可能とマークされたインポートは、再合成用に登録されます。Imports marked as recomposable will be registered for recomposition.

SatisfyImportsOnceメソッドを使用すると、コンテナーに追加しなくても、パートにインポートを格納できます。The SatisfyImportsOnce method allows a part to have its imports filled without being added to the container. コンポジションが成功した場合、パートのインポートは塗りつぶされますが、パートのエクスポートは他の部分では使用できず、再合成に対してインポートは登録されません。If the composition is successful, the part's imports will be filled, but the part's exports will not be available to other parts and no imports will be registered for recomposition.

CompositionContainerオブジェクトは常に破棄される必要があります。CompositionContainer objects should always be disposed. メソッドが呼び出されると、オブジェクトCompositionContainerは、作成されたすべてのパートも破棄します。 DisposeWhen the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

複数CompositionContainerのスレッドからアクセスできるオブジェクトは、 CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])コンストラクターを使用してisThreadSafe 、パラメーターをtrueに設定して構築する必要があります。A CompositionContainer object that can be accessed from multiple threads must be constructed with the isThreadSafe parameter set to true, using the CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) constructor. がの場合isThreadSafe 、パフォーマンスは少し遅くなります。したがって、シングルスレッドのfalseシナリオではtrue、このパラメーターをに設定することをお勧めします。Performance will be slightly slower when isThreadSafe is true, so we recommend that you set this parameter to false in single-threaded scenarios. 既定値は、false です。The default is false.

警告

は、それ自体、または参照を持つパートをインポートしないようにする必要があります。CompositionContainerA CompositionContainer should never import itself, or a part that has a reference to it. このような参照を使用すると、信頼されていない部分がコンテナー内のすべての部分にアクセスできるようになります。Such a reference could allow an untrusted part to gain access all the parts in the container.

コンストラクター

CompositionContainer() CompositionContainer() CompositionContainer() CompositionContainer()

CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

カタログとエクスポート プロバイダーを指定して、スレッド セーフ モードで CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class with the specified catalog, thread-safe mode, and export providers.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

指定したカタログ、オプション、およびエクスポート プロバイダーを使用して、CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class with the specified catalog, options, and export providers.

CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[])

カタログとエクスポート プロバイダーを指定して、CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class with the specified catalog and export providers.

CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[])

指定したエクスポート プロバイダーとオプションを使用して、CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class with the specified export providers and options.

CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[])

エクスポート プロバイダーを指定して、CompositionContainer クラスの新しいインスタンスを初期化します。Initializes a new instance of the CompositionContainer class with the specified export providers.

プロパティ

Catalog Catalog Catalog Catalog

ComposablePartCatalog オブジェクトへのコンテナー アクセスを提供する Export を取得します。Gets the ComposablePartCatalog that provides the container access to Export objects.

Providers Providers Providers Providers

追加の ComposablePartCatalog オブジェクトへのコンテナー アクセスを提供するエクスポート プロバイダーを取得します。Gets the export providers that provide the container access to additional ComposablePartCatalog objects.

メソッド

Compose(CompositionBatch) Compose(CompositionBatch) Compose(CompositionBatch) Compose(CompositionBatch)

コンテナーで指定した CompositionBatch 内のパーツを追加または削除して、合成を実行します。Adds or removes the parts in the specified CompositionBatch from the container and executes composition.

Dispose() Dispose() Dispose() Dispose()

CompositionContainer クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the CompositionContainer class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

CompositionContainer によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the CompositionContainer and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetExport<T,TMetadataView>() GetExport<T,TMetadataView>() GetExport<T,TMetadataView>() GetExport<T,TMetadataView>()

指定した型パラメーターから派生したコントラクト名を持つエクスポートを返します。Returns the export with the contract name derived from the specified type parameter. 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String)

指定したコントラクト名を持つエクスポートを返します。Returns the export with the specified contract name. 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T>() GetExport<T>() GetExport<T>() GetExport<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポートを返します。Returns the export with the contract name derived from the specified type parameter. 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T>(String) GetExport<T>(String) GetExport<T>(String) GetExport<T>(String)

指定したコントラクト名を持つエクスポートを返します。Returns the export with the specified contract name. 一致するエクスポートが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValue<T>() GetExportedValue<T>() GetExportedValue<T>() GetExportedValue<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポート オブジェクトを返します。Returns the exported object with the contract name derived from the specified type parameter. 一致するエクスポート オブジェクトが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching exported object, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValue<T>(String) GetExportedValue<T>(String) GetExportedValue<T>(String) GetExportedValue<T>(String)

指定したコントラクト名を持つエクスポート オブジェクトを返します。Returns the exported object with the specified contract name. 一致するエクスポート オブジェクトが 1 つだけある場合以外は、例外がスローされます。If there is not exactly one matching exported object, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValueOrDefault<T>() GetExportedValueOrDefault<T>() GetExportedValueOrDefault<T>() GetExportedValueOrDefault<T>()

指定した型パラメーターから派生したコントラクト名を持つエクスポート オブジェクト、または指定した型の既定値を取得します。一致するエクスポート オブジェクトが複数ある場合は、例外がスローされます。Gets the exported object with the contract name derived from the specified type parameter or the default value for the specified type, or throws an exception if there is more than one matching exported object.

(Inherited from ExportProvider)
GetExportedValueOrDefault<T>(String) GetExportedValueOrDefault<T>(String) GetExportedValueOrDefault<T>(String) GetExportedValueOrDefault<T>(String)

指定したコントラクト名を持つエクスポート オブジェクト、または指定した型の既定値を取得します。一致するエクスポート オブジェクトが複数ある場合は、例外がスローされます。Gets the exported object with the specified contract name or the default value for the specified type, or throws an exception if there is more than one matching exported object.

(Inherited from ExportProvider)
GetExportedValues<T>() GetExportedValues<T>() GetExportedValues<T>() GetExportedValues<T>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポート オブジェクトを取得します。Gets all the exported objects with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExportedValues<T>(String) GetExportedValues<T>(String) GetExportedValues<T>(String) GetExportedValues<T>(String)

指定したコントラクト名を持つすべてのエクスポート オブジェクトを取得します。Gets all the exported objects with the specified contract name.

(Inherited from ExportProvider)
GetExports(ImportDefinition) GetExports(ImportDefinition) GetExports(ImportDefinition) GetExports(ImportDefinition)

指定したインポート定義の条件に一致するすべてのエクスポートを取得します。Gets all exports that match the conditions of the specified import definition.

(Inherited from ExportProvider)
GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition)

指定されたインポート定義および合成の条件に一致するすべてのエクスポートを取得します。Gets all exports that match the conditions of the specified import definition and composition.

(Inherited from ExportProvider)
GetExports(Type, Type, String) GetExports(Type, Type, String) GetExports(Type, Type, String) GetExports(Type, Type, String)

指定したコントラクト名を持つすべてのエクスポートを取得します。Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExports<T,TMetadataView>() GetExports<T,TMetadataView>() GetExports<T,TMetadataView>() GetExports<T,TMetadataView>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポートを取得します。Gets all the exports with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String)

指定したコントラクト名を持つすべてのエクスポートを取得します。Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExports<T>() GetExports<T>() GetExports<T>() GetExports<T>()

指定した型パラメーターから派生したコントラクト名を持つすべてのエクスポートを取得します。Gets all the exports with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExports<T>(String) GetExports<T>(String) GetExports<T>(String) GetExports<T>(String)

指定したコントラクト名を持つすべてのエクスポートを取得します。Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition)

指定した ImportDefinition オブジェクトの条件に一致するすべてのエクスポートのコレクションを返します。Returns a collection of all exports that match the conditions in the specified ImportDefinition object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs)

ExportsChanged イベントを発生させます。Raises the ExportsChanged event.

(Inherited from ExportProvider)
OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs)

ExportsChanging イベントを発生させます。Raises the ExportsChanging event.

(Inherited from ExportProvider)
ReleaseExport(Export) ReleaseExport(Export) ReleaseExport(Export) ReleaseExport(Export)

指定した Export オブジェクトを CompositionContainer から解放します。Releases the specified Export object from the CompositionContainer.

ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>)

指定したエクスポートを合成から削除し、可能な場合はそのリソースを解放します。Removes the specified export from composition and releases its resources if possible.

ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>)

Export オブジェクトのセットを CompositionContainer から解放します。Releases a set of Export objects from the CompositionContainer.

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

エクスポートのコレクションを合成から削除し、可能な場合はそれらのリソースを解放します。Removes a collection of exports from composition and releases their resources if possible.

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

エクスポートのコレクションを合成から削除し、可能な場合はそれらのリソースを解放します。Removes a collection of exports from composition and releases their resources if possible.

SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart)

指定した ComposablePart オブジェクトのインポートを、再合成の対象としては登録せずに満たします。Satisfies the imports of the specified ComposablePart object without registering it for recomposition.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

指定されたインポートの条件に一致するすべてのエクスポートを取得します。Gets all the exports that match the conditions of the specified import.

(Inherited from ExportProvider)

イベント

ExportsChanged ExportsChanged ExportsChanged ExportsChanged

ExportProvider 内のエクスポートが変更されたときに発生します。Occurs when the exports in the ExportProvider change.

(Inherited from ExportProvider)
ExportsChanging ExportsChanging ExportsChanging ExportsChanging

提供されるエクスポートが変更されているときに発生します。Occurs when the provided exports are changing.

(Inherited from ExportProvider)

拡張メソッド

ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T)

指定された値からパーツを作成し、指定された合成コンテナーで合成します。Creates a part from the specified value and composes it in the specified composition container.

ComposeExportedValue<T>(CompositionContainer, String, T) ComposeExportedValue<T>(CompositionContainer, String, T) ComposeExportedValue<T>(CompositionContainer, String, T) ComposeExportedValue<T>(CompositionContainer, String, T)

指定されたオブジェクトから指定されたコントラクト名でパーツを作成し、指定された合成コンテナーで合成します。Creates a part from the specified object under the specified contract name and composes it in the specified composition container.

ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[])

属性付きオブジェクトの配列からコンポーザブル パーツを作成し、指定された合成コンテナーで合成します。Creates composable parts from an array of attributed objects and composes them in the specified composition container.

SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object)

再合成を無効にし、指定された合成サービスを使用して、指定されたパーツを合成します。Composes the specified part by using the specified composition service, with recomposition disabled.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

指定されたパーツを、再合成を無効にして、指定された合成サービスと指定されたリフレクション コンテキストを使用して合成します。Composes the specified part by using the specified composition service, with recomposition disabled and using the specified reflection context.

適用対象

こちらもご覧ください