CompositionContainer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verwaltet die Komposition 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
- 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 Attributierte Programmiermodell 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 wird nachverfolgt, welche Teile für die Komposition verfügbar sind und welche Abhängigkeiten sie haben, und führt die Komposition aus, wenn sich der Satz der verfügbaren Teile ändert. Zweitens stellt es die Methoden bereit, mit denen die Anwendung Instanzen von zusammengesetzten Teilen abruft oder die Abhängigkeiten eines zusammengesetzten Teils füllt.
Wichtig
Dieser Typ implementiert die IDisposable-Schnittstelle. Nach Abschluss der Verwendung sollten Sie den Typ entweder direkt oder indirekt löschen. Zum direkten Löschen des Typs rufen Sie seine Dispose-Methode in einem try
/catch
-Block auf. Zum indirekten Löschen verwenden Sie ein Sprachkonstrukt wie using
(in C#) oder Using
(in Visual Basic). Weitere Informationen finden Sie im Abschnitt „Verwenden eines Objekts, das IDisposable implementiert“ des Themas „Die IDisposable-Schnittstelle“.
Teile können dem Container entweder direkt oder über die Catalog -Eigenschaft zur Verfügung gestellt werden. Alle darin ComposablePartCatalog erkennbaren Teile stehen dem Container zur Verfügung, um Importe zu erfüllen, zusammen mit allen direkt hinzugefügten Teilen.
Die Compose -Methode ermöglicht das Hinzufügen instanziierter Teile zu einem vorhandenen Container. Wenn die Komposition erfolgreich ist, werden ihre Importe mit Aus dem Container abgerufenen Teilen gefüllt, und ihre Exporte sind für andere Teile verfügbar. Importe, die als neu komposierbar gekennzeichnet sind, werden für die Neukomposition registriert.
Die SatisfyImportsOnce -Methode ermöglicht es einem Teil, seine Importe zu füllen, ohne dem Container hinzugefügt zu werden. Wenn die Komposition 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, entsorgt das CompositionContainer Objekt auch alle teile, die es erstellt hat.
Ein CompositionContainer Objekt, auf das über mehrere Threads zugegriffen werden kann, muss mit dem isThreadSafe
Parameter auf festgelegt true
werden, indem der CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) Konstruktor verwendet wird. Die Leistung ist etwas langsamer, wenn isThreadSafe
dies der Fall ist true
. Daher wird empfohlen, diesen Parameter in Singlethread-Szenarien auf false
festzulegen. Der Standardwert ist false
.
Warnung
Ein CompositionContainer sollte niemals sich selbst oder einen Teil importieren, 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
CompositionContainer() |
Initialisiert eine neue Instanz der CompositionContainer-Klasse. |
CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Initialisiert eine neue Instanz der CompositionContainer-Klasse mit dem angegebenen Katalog, im threadsicheren Modus und mit den angegebenen 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 den angegebenen Exportanbietern. |
CompositionContainer(CompositionOptions, ExportProvider[]) |
Initialisiert eine neue Instanz der CompositionContainer-Klasse mit dem angegebenen Katalog und den angegebenen Exportanbietern und Optionen. |
CompositionContainer(ExportProvider[]) |
Initialisiert eine neue Instanz der CompositionContainer-Klasse mit den angegebenen Exportanbietern. |
Eigenschaften
Catalog |
Ruft das ComposablePartCatalog-Objekt ab, das den Containerzugriff auf Export-Objekte bereitstellt. |
Providers |
Ruft die Exportanbieter ab, die den Containerzugriff auf zusätzliche ComposablePartCatalog-Objekte bereitstellen. |
Methoden
Compose(CompositionBatch) |
Fügt die Teile im angegebenen CompositionBatch dem Container hinzu bzw. entfernt sie aus dem Container und führt die Komposition aus. |
Dispose() |
Gibt alle von der aktuellen Instanz der CompositionContainer-Klasse verwendeten Ressourcen frei. |
Dispose(Boolean) |
Gibt die von CompositionContainer verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetExport<T,TMetadataView>() |
Gibt den Export mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen zurück. Wenn nicht genau ein übereinstimmender Export vorhanden ist, wird eine Ausnahme ausgelöst. (Geerbt von ExportProvider) |
GetExport<T,TMetadataView>(String) |
Gibt den Export mit dem angegebenen Vertragsnamen zurück. Wenn nicht genau ein übereinstimmender Export vorhanden ist, wird eine Ausnahme ausgelöst. (Geerbt von ExportProvider) |
GetExport<T>() |
Gibt den Export mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen zurück. Wenn nicht genau ein übereinstimmender Export vorhanden ist, wird eine Ausnahme ausgelöst. (Geerbt von ExportProvider) |
GetExport<T>(String) |
Gibt den Export mit dem angegebenen Vertragsnamen zurück. Wenn nicht genau ein übereinstimmender Export vorhanden ist, 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 übereinstimmendes 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 übereinstimmendes exportiertes Objekt vorhanden ist, wird eine Ausnahme ausgelöst. (Geerbt von ExportProvider) |
GetExportedValueOrDefault<T>() |
Ruft das exportierte Objekt mit dem vom angegebenen Typparameter abgeleiteten Vertragsnamen oder den Standardwert für den angegebenen Typ ab, oder löst eine Ausnahme aus, falls mehrere übereinstimmende exportierte Objekte vorhanden sind. (Geerbt von ExportProvider) |
GetExportedValueOrDefault<T>(String) |
Ruft das exportierte Objekt mit dem angegebenen Vertragsnamen oder den Standardwert für den angegebenen Typ ab, oder löst eine Ausnahme aus, falls 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) |
Ruft alle Exporte ab, die mit den Bedingungen der angegebenen Importdefinition übereinstimmen. (Geerbt von ExportProvider) |
GetExports(ImportDefinition, AtomicComposition) |
Ruft alle Exporte ab, die den Bedingungen der angegebenen Importdefinition und Komposition 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 mit den Bedingungen im angegebenen ImportDefinition-Objekt zu übereinstimmen. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des 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 frei. |
ReleaseExport<T>(Lazy<T>) |
Entfernt den angegebenen Export aus der Komposition und gibt sofern möglich seine Ressourcen frei. |
ReleaseExports(IEnumerable<Export>) |
Gibt einen Satz von Export-Objekten aus dem CompositionContainer frei. |
ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Entfernt eine Auflistung der Exporte aus der Komposition und gibt sofern möglich ihre Ressourcen frei. |
ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Entfernt eine Auflistung der Exporte aus der Komposition und gibt sofern möglich ihre Ressourcen frei. |
SatisfyImportsOnce(ComposablePart) |
Führt die Importe des angegebenen ComposablePart-Objekts aus, ohne es zur Neuerstellung 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 für den angegebenen Import entsprechen. (Geerbt von ExportProvider) |
Ereignisse
ExportsChanged |
Tritt auf, wenn sich die Exporte in ExportProvider ändern. (Geerbt von ExportProvider) |
ExportsChanging |
Tritt auf, wenn sich die bereitgestellten Exporte ändern. (Geerbt von ExportProvider) |
Erweiterungsmethoden
ComposeExportedValue<T>(CompositionContainer, T) |
Erstellt ein Part aus dem angegebenen Wert und verfasst es im angegebenen Kompositionscontainer. |
ComposeExportedValue<T>(CompositionContainer, String, T) |
Erstellt ein Part aus dem angegebenen Objekt unter dem angegebenen Vertragsnamen und verfasst es im angegebenen Kompositionscontainer. |
ComposeParts(CompositionContainer, Object[]) |
Erstellt zusammensetzbare Parts aus einem Array attributierter Objekte und verfasst sie im angegebenen Kompositionscontainer. |
SatisfyImportsOnce(ICompositionService, Object) |
Verfasst das angegebene Part mit dem angegebenen Kompositionsdienst bei deaktivierter Neuerstellung. |
SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
Verfasst den angegebenen Teil mit dem angegebenen Kompositionsdiensts wenn die Neuerstellung deaktiviert ist und unter Verwendung des angegebenen Reflektionskontexts. |