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

注釈

ACompositionContainerオブジェクトは、アプリケーションで 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. 次に、アプリケーションをで構成されるパーツのインスタンスを取得またはコンポーザブル パーツの依存関係を設定するメソッドを提供します。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. ときに、Disposeメソッドを呼び出すと、CompositionContainerオブジェクトが作成したすべての部分も破棄します。When the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

ACompositionContainer複数のスレッドからアクセスできるオブジェクトの作成に使用する必要があります、isThreadSafeパラメーターに設定trueを使用して、CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])コンス トラクター。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. パフォーマンスがわずかに遅くなるときをするisThreadSafetrueには、このパラメーターを設定することをお勧めしているため、falseシングル スレッド シナリオでします。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.

警告

ACompositionContainer自体、またはへの参照を持つパーツをインポートすることはありません。A 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)

Extension Methods

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.

適用対象

こちらもご覧ください