Freigeben über


CompositionContainer Klasse

Definition

Verwaltet die Zusammensetzung von Teilen.

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
Vererbung
CompositionContainer
Implementiert

Beispiele

Im folgenden Beispiel wird ein CompositionContainer Objekt mit einem Katalog initialisiert und zum Ausfüllen der Importe eines Teils verwendet. In diesem Beispiel wird das Attributprogrammierungsmodell verwendet.

[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

Hinweise

Ein CompositionContainer Objekt dient zwei Hauptzwecke in einer Anwendung. Zunächst verfolgt er, welche Teile für die Komposition verfügbar sind und welche Abhängigkeiten sie sind, und führt kompositionskompositionen aus, wenn sich die Gruppe der verfügbaren Teile ändert. Zweitens stellt sie die Methoden bereit, mit denen die Anwendung Instanzen zusammengesetzter Teile abruft oder die Abhängigkeiten eines komponierbaren Teils ausfüllt.

Von Bedeutung

Dieser Typ implementiert die IDisposable Schnittstelle. Nach Abschluss der Verwendung sollten Sie den Typ entweder direkt oder indirekt löschen. Rufen Sie die Methode Dispose in einem try/catch-Block auf, um den Typ direkt zu entsorgen. Verwenden Sie zum indirekten Löschen ein Sprachkonstrukt wie using (in C#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, das IDisposable implementiert" im IDisposable Schnittstellenthema.

Teile können dem Container entweder direkt oder über die Catalog Eigenschaft zur Verfügung gestellt werden. Alle teile, die in diesem ComposablePartCatalog Bereich auffindbar sind, stehen dem Container zur Verfügung, um Importe zu erfüllen, sowie alle Teile, die direkt hinzugefügt wurden.

Mit der Compose Methode können instanziierte Teile einem vorhandenen Container hinzugefügt werden. Wenn die Zusammensetzung erfolgreich ist, werden diese Teile mit teilen gefüllt, die aus dem Container abgerufen werden, und ihre Exporte stehen anderen Teilen zur Verfügung. Importe, die als neu komposierbar gekennzeichnet sind, werden für die Neukomposition registriert.

Mit der SatisfyImportsOnce Methode kann ein Teil seine Importe füllen lassen, ohne dem Container hinzugefügt zu werden. Wenn die Zusammensetzung erfolgreich ist, werden die Importe des Teils ausgefüllt, aber die Exporte des Teils sind für andere Teile nicht verfügbar, und es werden keine Importe für die Neukomposition registriert.

CompositionContainer Objekte sollten immer verworfen werden. Wenn die Dispose Methode aufgerufen wird, verworfen das CompositionContainer Objekt auch alle Teile, die es erstellt hat.

Ein CompositionContainer Objekt, auf das über mehrere Threads zugegriffen werden kann, muss mithilfe des CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) Konstruktors mit dem isThreadSafe Parametersatz trueerstellt werden. Die Leistung ist etwas langsamer, wenn isThreadSafe dies der Fall ist true. Daher wird empfohlen, diesen Parameter in Singlethread-Szenarien festzulegen false . Der Standardwert lautet false.

Warnung

A CompositionContainer sollte sich niemals selbst importieren, oder ein Teil, der einen Verweis darauf hat. Ein solcher Verweis könnte es einem nicht vertrauenswürdigen Teil ermöglichen, zugriff auf alle Teile im Container zu erhalten.

Konstruktoren

Name Beschreibung
CompositionContainer()

Initialisiert eine neue Instanz der CompositionContainer-Klasse.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Initialisiert eine neue Instanz der CompositionContainer Klasse mit dem angegebenen Katalog, threadsicheren Modus und Exportanbietern.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Initialisiert eine neue Instanz der CompositionContainer Klasse mit dem angegebenen Katalog, optionen und Exportanbietern.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Initialisiert eine neue Instanz der CompositionContainer Klasse mit dem angegebenen Katalog- und Exportanbieter.

CompositionContainer(CompositionOptions, ExportProvider[])

Initialisiert eine neue Instanz der CompositionContainer Klasse mit den angegebenen Exportanbietern und -optionen.

CompositionContainer(ExportProvider[])

Initialisiert eine neue Instanz der CompositionContainer Klasse mit den angegebenen Exportanbietern.

Eigenschaften

Name Beschreibung
Catalog

Ruft den ComposablePartCatalog Containerzugriff auf Export Objekte ab.

Providers

Ruft die Exportanbieter ab, die den Containerzugriff auf zusätzliche ComposablePartCatalog Objekte bereitstellen.

Methoden

Name Beschreibung
Compose(CompositionBatch)

Fügt die Teile im angegebenen CompositionBatch Container hinzu oder entfernt sie und führt Komposition aus.

Dispose()

Gibt alle Ressourcen frei, die von der aktuellen Instanz der CompositionContainer Klasse verwendet werden.

Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den CompositionContainer verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetExport<T,TMetadataView>()

Gibt den Export mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen zurück. Wenn es nicht genau einen übereinstimmenden Export gibt, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExport<T,TMetadataView>(String)

Gibt den Export mit dem angegebenen Vertragsnamen zurück. Wenn es nicht genau einen übereinstimmenden Export gibt, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExport<T>()

Gibt den Export mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen zurück. Wenn es nicht genau einen übereinstimmenden Export gibt, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExport<T>(String)

Gibt den Export mit dem angegebenen Vertragsnamen zurück. Wenn es nicht genau einen übereinstimmenden Export gibt, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExportedValue<T>()

Gibt das exportierte Objekt mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen zurück. Wenn nicht genau ein übereinstimmende exportiertes Objekt vorhanden ist, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExportedValue<T>(String)

Gibt das exportierte Objekt mit dem angegebenen Vertragsnamen zurück. Wenn nicht genau ein übereinstimmende exportiertes Objekt vorhanden ist, wird eine Ausnahme ausgelöst.

(Geerbt von ExportProvider)
GetExportedValueOrDefault<T>()

Ruft das exportierte Objekt mit dem Vertragsnamen ab, der vom angegebenen Typparameter oder dem Standardwert für den angegebenen Typ abgeleitet wurde, oder löst eine Ausnahme aus, wenn mehrere übereinstimmende exportierte Objekte vorhanden sind.

(Geerbt von ExportProvider)
GetExportedValueOrDefault<T>(String)

Ruft das exportierte Objekt mit dem angegebenen Vertragsnamen oder dem Standardwert für den angegebenen Typ ab oder löst eine Ausnahme aus, wenn mehrere übereinstimmende exportierte Objekte vorhanden sind.

(Geerbt von ExportProvider)
GetExportedValues<T>()

Ruft alle exportierten Objekte mit dem Vom angegebenen Typparameter abgeleiteten Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExportedValues<T>(String)

Ruft alle exportierten Objekte mit dem angegebenen Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Ruft alle Exporte ab, die den Bedingungen der angegebenen Importdefinition und -komposition entsprechen.

(Geerbt von ExportProvider)
GetExports(ImportDefinition)

Ruft alle Exporte ab, die den Bedingungen der angegebenen Importdefinition entsprechen.

(Geerbt von ExportProvider)
GetExports(Type, Type, String)

Ruft alle Exporte mit dem angegebenen Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExports<T,TMetadataView>()

Ruft alle Exporte mit dem Vom angegebenen Typparameter abgeleiteten Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExports<T,TMetadataView>(String)

Ruft alle Exporte mit dem angegebenen Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExports<T>()

Ruft alle Exporte mit dem Vom angegebenen Typparameter abgeleiteten Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExports<T>(String)

Ruft alle Exporte mit dem angegebenen Vertragsnamen ab.

(Geerbt von ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Gibt eine Auflistung aller Exporte zurück, die den Bedingungen im angegebenen ImportDefinition Objekt entsprechen.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnExportsChanged(ExportsChangeEventArgs)

Löst das ExportsChanged-Ereignis aus.

(Geerbt von ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Löst das ExportsChanging-Ereignis aus.

(Geerbt von ExportProvider)
ReleaseExport(Export)

Gibt das angegebene Export Objekt aus dem CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Entfernt den angegebenen Export aus der Komposition und gibt seine Ressourcen nach Möglichkeit frei.

ReleaseExports(IEnumerable<Export>)

Gibt einen Satz von Export Objekten aus der CompositionContainer.

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

Entfernt nach Möglichkeit eine Sammlung von Exporten aus der Komposition und gibt ihre Ressourcen frei.

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

Entfernt nach Möglichkeit eine Sammlung von Exporten aus der Komposition und gibt ihre Ressourcen frei.

SatisfyImportsOnce(ComposablePart)

Erfüllt die Importe des angegebenen ComposablePart Objekts, ohne es für die Neukomposition zu registrieren.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Ruft alle Exporte ab, die den Bedingungen des angegebenen Imports entsprechen.

(Geerbt von ExportProvider)

Ereignisse

Name Beschreibung
ExportsChanged

Tritt auf, wenn die Exporte in der ExportProvider Änderung erfolgen.

(Geerbt von ExportProvider)
ExportsChanging

Tritt auf, wenn sich die bereitgestellten Exporte ändern.

(Geerbt von ExportProvider)

Erweiterungsmethoden

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

Erstellt einen Teil aus dem angegebenen Objekt unter dem angegebenen Vertragsnamen und erstellt ihn im angegebenen Kompositionscontainer.

ComposeExportedValue<T>(CompositionContainer, T)

Erstellt einen Teil aus dem angegebenen Wert und erstellt ihn im angegebenen Kompositionscontainer.

ComposeParts(CompositionContainer, Object[])

Erstellt kompositable Teile aus einem Array von attributierten Objekten und verfasst sie im angegebenen Kompositionscontainer.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Verfasst den angegebenen Teil mithilfe des angegebenen Kompositionsdiensts, wobei die Neukomposition deaktiviert und der angegebene Spiegelungskontext verwendet wird.

SatisfyImportsOnce(ICompositionService, Object)

Verfasst den angegebenen Teil mithilfe des angegebenen Kompositionsdiensts, wobei die Neukomposition deaktiviert ist.

Gilt für:

Weitere Informationen