CompositionContainer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zarządza kompozycją części.
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
- Dziedziczenie
- Implementuje
Przykłady
W poniższym przykładzie CompositionContainer obiekt jest inicjowany z wykazem i służy do wypełniania importów części. W tym przykładzie użyto modelu programowania przypisanego.
[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
Uwagi
CompositionContainer Obiekt służy dwóm głównym celom w aplikacji. Po pierwsze, śledzi, które części są dostępne do składu i jakie są ich zależności, i wykonuje kompozycję za każdym razem, gdy zestaw dostępnych części się zmienia. Po drugie, udostępnia metody, za pomocą których aplikacja pobiera wystąpienia złożonych części lub wypełnia zależności części możliwej do skomponowania.
Ważne
Ten typ implementuje IDisposable interfejs. Po zakończeniu korzystania z typu należy usunąć go bezpośrednio lub pośrednio. Aby bezpośrednio usunąć typ, wywołaj jego Dispose metodę try
/catch
w bloku. Aby usunąć go pośrednio, użyj konstrukcji języka, takiej jak using
(w języku C#) lub Using
(w Visual Basic). Aby uzyskać więcej informacji, zobacz sekcję "Using an Object that Implements IDisposable" (Używanie obiektu implementujące interfejs IDisposable) w temacie interfejsu IDisposable .
Części mogą być udostępniane kontenerowi bezpośrednio lub za pośrednictwem Catalog właściwości . Wszystkie części, które można wykryć w tym ComposablePartCatalog miejscu, są dostępne dla kontenera do realizacji importu wraz z wszystkimi częściami dodanymi bezpośrednio.
Metoda Compose umożliwia dodawanie wystąpionych części do istniejącego kontenera. Zakładając, że kompozycja zakończy się pomyślnie, te części będą miały import wypełniony częściami pobranymi z kontenera, a ich eksport będzie dostępny dla innych części. Importy oznaczone jako ponowne kompozycje zostaną zarejestrowane do ponownego kompozycji.
Metoda SatisfyImportsOnce umożliwia części wypełnienie importów bez dodawania ich do kontenera. Jeśli kompozycja zakończy się pomyślnie, import części zostanie wypełniony, ale eksport części nie będzie dostępny dla innych części i żaden import nie zostanie zarejestrowany do rekompozycji.
CompositionContainer obiekty powinny być zawsze usuwane. Po wywołaniu DisposeCompositionContainer metody obiekt usuwa również wszystkie utworzone przez niego części.
Obiekt CompositionContainer , do którego można uzyskać dostęp z wielu wątków, musi być skonstruowany z parametrem ustawionym isThreadSafe
na true
, przy użyciu konstruktora CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) . Wydajność będzie nieco wolniejsza, gdy isThreadSafe
parametr ma true
wartość , dlatego zalecamy ustawienie tego parametru na false
wartość w scenariuszach jednowątkowych. Wartość domyślna to false
.
Ostrzeżenie
Element CompositionContainer nigdy nie powinien importować się ani części, która zawiera odwołanie do niego. Takie odwołanie może umożliwić niezaufanej części uzyskanie dostępu do wszystkich części w kontenerze.
Konstruktory
CompositionContainer() |
Inicjuje nowe wystąpienie klasy CompositionContainer. |
CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Inicjuje CompositionContainer nowe wystąpienie klasy z określonym wykazem, trybem awaryjnym wątków i dostawcami eksportu. |
CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
Inicjuje CompositionContainer nowe wystąpienie klasy z określonym wykazem, opcjami i dostawcami eksportu. |
CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
Inicjuje CompositionContainer nowe wystąpienie klasy z określonym wykazem i dostawcami eksportu. |
CompositionContainer(CompositionOptions, ExportProvider[]) |
Inicjuje CompositionContainer nowe wystąpienie klasy z określonymi dostawcami eksportu i opcjami. |
CompositionContainer(ExportProvider[]) |
Inicjuje CompositionContainer nowe wystąpienie klasy z określonymi dostawcami eksportu. |
Właściwości
Catalog |
Pobiera obiekt ComposablePartCatalog , który zapewnia kontenerowi dostęp do Export obiektów. |
Providers |
Pobiera dostawców eksportu, którzy zapewniają dostęp kontenera do dodatkowych ComposablePartCatalog obiektów. |
Metody
Compose(CompositionBatch) |
Dodaje lub usuwa części określone CompositionBatch z kontenera i wykonuje kompozycję. |
Dispose() |
Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy CompositionContainer. |
Dispose(Boolean) |
Zwalnia zasoby niezarządzane używane przez element CompositionContainer i opcjonalnie zwalnia zasoby zarządzane. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetExport<T,TMetadataView>() |
Zwraca eksport z nazwą kontraktu pochodzącą z określonego parametru typu. Jeśli nie ma dokładnie jednego zgodnego eksportu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExport<T,TMetadataView>(String) |
Zwraca eksport o określonej nazwie kontraktu. Jeśli nie ma dokładnie jednego zgodnego eksportu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExport<T>() |
Zwraca eksport z nazwą kontraktu pochodzącą z określonego parametru typu. Jeśli nie ma dokładnie jednego zgodnego eksportu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExport<T>(String) |
Zwraca eksport o określonej nazwie kontraktu. Jeśli nie ma dokładnie jednego zgodnego eksportu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExportedValue<T>() |
Zwraca wyeksportowany obiekt o nazwie kontraktu pochodzącej z określonego parametru typu. Jeśli nie ma dokładnie jednego zgodnego wyeksportowanego obiektu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExportedValue<T>(String) |
Zwraca wyeksportowany obiekt o określonej nazwie kontraktu. Jeśli nie ma dokładnie jednego zgodnego wyeksportowanego obiektu, zgłaszany jest wyjątek. (Odziedziczone po ExportProvider) |
GetExportedValueOrDefault<T>() |
Pobiera wyeksportowany obiekt z nazwą kontraktu pochodzącą z określonego parametru typu lub wartością domyślną dla określonego typu lub zgłasza wyjątek, jeśli istnieje więcej niż jeden zgodny wyeksportowany obiekt. (Odziedziczone po ExportProvider) |
GetExportedValueOrDefault<T>(String) |
Pobiera wyeksportowany obiekt z określoną nazwą kontraktu lub wartością domyślną dla określonego typu lub zgłasza wyjątek, jeśli istnieje więcej niż jeden zgodny wyeksportowany obiekt. (Odziedziczone po ExportProvider) |
GetExportedValues<T>() |
Pobiera wszystkie wyeksportowane obiekty z nazwą kontraktu pochodzącą z określonego parametru typu. (Odziedziczone po ExportProvider) |
GetExportedValues<T>(String) |
Pobiera wszystkie wyeksportowane obiekty o określonej nazwie kontraktu. (Odziedziczone po ExportProvider) |
GetExports(ImportDefinition) |
Pobiera wszystkie eksporty zgodne z warunkami określonej definicji importu. (Odziedziczone po ExportProvider) |
GetExports(ImportDefinition, AtomicComposition) |
Pobiera wszystkie eksporty zgodne z warunkami określonej definicji i kompozycji importu. (Odziedziczone po ExportProvider) |
GetExports(Type, Type, String) |
Pobiera wszystkie eksporty z określoną nazwą kontraktu. (Odziedziczone po ExportProvider) |
GetExports<T,TMetadataView>() |
Pobiera wszystkie eksporty z nazwą kontraktu pochodzącą z określonego parametru typu. (Odziedziczone po ExportProvider) |
GetExports<T,TMetadataView>(String) |
Pobiera wszystkie eksporty z określoną nazwą kontraktu. (Odziedziczone po ExportProvider) |
GetExports<T>() |
Pobiera wszystkie eksporty z nazwą kontraktu pochodzącą z określonego parametru typu. (Odziedziczone po ExportProvider) |
GetExports<T>(String) |
Pobiera wszystkie eksporty z określoną nazwą kontraktu. (Odziedziczone po ExportProvider) |
GetExportsCore(ImportDefinition, AtomicComposition) |
Zwraca kolekcję wszystkich eksportów, które pasują do warunków w określonym ImportDefinition obiekcie. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnExportsChanged(ExportsChangeEventArgs) |
ExportsChanged Zgłasza zdarzenie. (Odziedziczone po ExportProvider) |
OnExportsChanging(ExportsChangeEventArgs) |
ExportsChanging Zgłasza zdarzenie. (Odziedziczone po ExportProvider) |
ReleaseExport(Export) |
Zwalnia określony Export obiekt z obiektu CompositionContainer. |
ReleaseExport<T>(Lazy<T>) |
Usuwa określony eksport z kompozycji i zwalnia jego zasoby, jeśli to możliwe. |
ReleaseExports(IEnumerable<Export>) |
Zwalnia zestaw Export obiektów z obiektu CompositionContainer. |
ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Usuwa kolekcję eksportów z kompozycji i zwalnia ich zasoby, jeśli to możliwe. |
ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Usuwa kolekcję eksportów z kompozycji i zwalnia ich zasoby, jeśli to możliwe. |
SatisfyImportsOnce(ComposablePart) |
Spełnia import określonego ComposablePart obiektu bez rejestrowania go do rekompozycji. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) |
Pobiera wszystkie eksporty zgodne z warunkami określonego importu. (Odziedziczone po ExportProvider) |
Zdarzenia
ExportsChanged |
Występuje, gdy eksporty w ExportProvider ramach zmiany. (Odziedziczone po ExportProvider) |
ExportsChanging |
Występuje, gdy podane eksporty zmieniają się. (Odziedziczone po ExportProvider) |
Metody rozszerzania
ComposeExportedValue<T>(CompositionContainer, T) |
Tworzy część na podstawie określonej wartości i komponuje ją w określonym kontenerze kompozycji. |
ComposeExportedValue<T>(CompositionContainer, String, T) |
Tworzy część z określonego obiektu pod określoną nazwą kontraktu i komponuje go w określonym kontenerze kompozycji. |
ComposeParts(CompositionContainer, Object[]) |
Tworzy części składowe na podstawie tablicy obiektów przypisanych i komponuje je w określonym kontenerze kompozycji. |
SatisfyImportsOnce(ICompositionService, Object) |
Komponuje określoną część przy użyciu określonej usługi kompozycji z wyłączoną rekompozycją. |
SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
Komponuje określoną część przy użyciu określonej usługi kompozycji z wyłączoną rekompozycją i przy użyciu określonego kontekstu odbicia. |