CompositionContainer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spravuje složení částí.
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
- Dědičnost
- Implementuje
Příklady
V následujícím příkladu CompositionContainer je objekt inicializován katalogem a slouží k vyplnění importů části. V tomto příkladu se používá programovací model s atributy.
[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
Poznámky
Objekt CompositionContainer slouží v aplikaci ke dvěma hlavním účelům. Za prvé sleduje, které části jsou k dispozici pro složení a jaké jsou jejich závislosti, a provádí složení vždy, když se sada dostupných částí změní. Za druhé poskytuje metody, kterými aplikace získá instance složených částí nebo vyplní závislosti kompozibilní části.
Důležité
Tento typ implementuje IDisposable rozhraní . Až s použitím typu skončíte, měli byste ho odstranit přímo nebo nepřímo. Chcete-li odstranit typ přímo, zavolejte jeho Dispose metodu try
/catch
v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, jako using
je (v jazyce C#) nebo Using
(v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.
Části mohou být kontejneru zpřístupněny buď přímo, nebo prostřednictvím Catalog vlastnosti . Všechny součásti zjistitelné v tomto ComposablePartCatalog souboru jsou k dispozici kontejneru pro splnění importu, spolu s přímo přidanými součástmi.
Metoda Compose umožňuje přidání částí instance do existujícího kontejneru. Za předpokladu, že složení je úspěšné, tyto části budou mít své importy naplněné částmi načtenými z kontejneru a jejich exporty budou k dispozici pro ostatní části. Importy označené jako rekomposable budou registrovány pro překompisování.
Metoda SatisfyImportsOnce umožňuje, aby se importy části vyplnily, aniž by se přidaly do kontejneru. Pokud je složení úspěšné, importy části budou vyplněny, ale exporty části nebudou k dispozici pro jiné části a žádné importy nebudou registrovány pro rekomppozici.
CompositionContainer objekty by měly být vždy odstraněny. Při zavolání DisposeCompositionContainer metody objekt také odstraní všechny části, které vytvořil.
Objekt CompositionContainer , ke kterému lze přistupovat z více vláken, musí být vytvořen pomocí parametru nastaveného isThreadSafe
na true
hodnotu pomocí konstruktoru CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) . Výkon bude o něco pomalejší, pokud isThreadSafe
je true
, proto doporučujeme nastavit tento parametr na hodnotu false
ve scénářích s jedním vláknem. Výchozí formát je false
.
Upozornění
A CompositionContainer by nikdy neměl importovat sám sebe nebo část, která na něj odkazuje. Takový odkaz by mohl umožnit nedůvěryhodné části získat přístup ke všem částem v kontejneru.
Konstruktory
CompositionContainer() |
Inicializuje novou instanci CompositionContainer třídy . |
CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem, režimem bezpečným pro přístup z více vláken a zprostředkovateli exportu. |
CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem, možnostmi a zprostředkovateli exportu. |
CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem a zprostředkovateli exportu. |
CompositionContainer(CompositionOptions, ExportProvider[]) |
Inicializuje novou instanci CompositionContainer třídy se zadanými zprostředkovateli a možnostmi exportu. |
CompositionContainer(ExportProvider[]) |
Inicializuje novou instanci CompositionContainer třídy se zadanými zprostředkovateli exportu. |
Vlastnosti
Catalog |
Získá , ComposablePartCatalog který poskytuje kontejner přístup k Export objektům. |
Providers |
Získá zprostředkovatele exportu, kteří poskytují kontejner přístup k dalším ComposablePartCatalog objektům. |
Metody
Compose(CompositionBatch) |
Přidá nebo odebere části v zadaném CompositionBatch kontejneru a provede sestavení. |
Dispose() |
Uvolní všechny prostředky používané aktuální instancí CompositionContainer třídy . |
Dispose(Boolean) |
Uvolní nespravované prostředky používané nástrojem CompositionContainer a volitelně uvolní spravované prostředky. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetExport<T,TMetadataView>() |
Vrátí export s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExport<T,TMetadataView>(String) |
Vrátí export se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExport<T>() |
Vrátí export s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExport<T>(String) |
Vrátí export se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExportedValue<T>() |
Vrátí exportovaný objekt s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající exportovaný objekt, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExportedValue<T>(String) |
Vrátí exportovaný objekt se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající exportovaný objekt, vyvolá se výjimka. (Zděděno od ExportProvider) |
GetExportedValueOrDefault<T>() |
Získá exportovaný objekt s názvem kontraktu odvozeným od zadaného parametru typu nebo výchozí hodnotou pro zadaný typ nebo vyvolá výjimku, pokud existuje více než jeden odpovídající exportovaný objekt. (Zděděno od ExportProvider) |
GetExportedValueOrDefault<T>(String) |
Získá exportovaný objekt se zadaným názvem kontraktu nebo výchozí hodnotou pro zadaný typ nebo vyvolá výjimku, pokud existuje více než jeden odpovídající exportovaný objekt. (Zděděno od ExportProvider) |
GetExportedValues<T>() |
Získá všechny exportované objekty s názvem kontraktu odvozeným od zadaného parametru typu. (Zděděno od ExportProvider) |
GetExportedValues<T>(String) |
Získá všechny exportované objekty se zadaným názvem smlouvy. (Zděděno od ExportProvider) |
GetExports(ImportDefinition) |
Získá všechny exporty, které splňují podmínky zadané definice importu. (Zděděno od ExportProvider) |
GetExports(ImportDefinition, AtomicComposition) |
Získá všechny exporty, které splňují podmínky zadané definice importu a složení. (Zděděno od ExportProvider) |
GetExports(Type, Type, String) |
Získá všechny exporty se zadaným názvem kontraktu. (Zděděno od ExportProvider) |
GetExports<T,TMetadataView>() |
Získá všechny exporty s názvem kontraktu odvozeným od zadaného parametru typu. (Zděděno od ExportProvider) |
GetExports<T,TMetadataView>(String) |
Získá všechny exporty se zadaným názvem kontraktu. (Zděděno od ExportProvider) |
GetExports<T>() |
Získá všechny exporty s názvem kontraktu odvozeným od zadaného parametru typu. (Zděděno od ExportProvider) |
GetExports<T>(String) |
Získá všechny exporty se zadaným názvem kontraktu. (Zděděno od ExportProvider) |
GetExportsCore(ImportDefinition, AtomicComposition) |
Vrátí kolekci všech exportů, které splňují podmínky v zadaném ImportDefinition objektu. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
OnExportsChanged(ExportsChangeEventArgs) |
ExportsChanged Vyvolá událost. (Zděděno od ExportProvider) |
OnExportsChanging(ExportsChangeEventArgs) |
ExportsChanging Vyvolá událost. (Zděděno od ExportProvider) |
ReleaseExport(Export) |
Uvolní zadaný Export objekt z objektu CompositionContainer. |
ReleaseExport<T>(Lazy<T>) |
Odebere zadaný export ze složení a uvolní jeho prostředky, pokud je to možné. |
ReleaseExports(IEnumerable<Export>) |
Uvolní sadu Export objektů z objektu CompositionContainer. |
ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Odebere kolekci exportů ze složení a uvolní její prostředky, pokud je to možné. |
ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Odebere kolekci exportů ze složení a uvolní její prostředky, pokud je to možné. |
SatisfyImportsOnce(ComposablePart) |
Splňuje importy zadaného ComposablePart objektu bez registrace pro rekomppozici. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) |
Získá všechny exporty, které splňují podmínky zadaného importu. (Zděděno od ExportProvider) |
Událost
ExportsChanged |
Vyvolá se při exportu ve ExportProvider změně. (Zděděno od ExportProvider) |
ExportsChanging |
Vyvolá se při změně zadaných exportů. (Zděděno od ExportProvider) |
Metody rozšíření
ComposeExportedValue<T>(CompositionContainer, T) |
Vytvoří část ze zadané hodnoty a sestaví ji v zadaném kontejneru složení. |
ComposeExportedValue<T>(CompositionContainer, String, T) |
Vytvoří část ze zadaného objektu pod zadaným názvem kontraktu a vytvoří ji v zadaném kontejneru složení. |
ComposeParts(CompositionContainer, Object[]) |
Vytvoří složené části z pole objektů s atributy a vytvoří je v zadaném kontejneru složení. |
SatisfyImportsOnce(ICompositionService, Object) |
Sesloží zadanou část pomocí zadané služby složení se zakázaným překompisováním. |
SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
Sesloží zadanou část pomocí zadané služby složení, se zakázaným rekompozicí a použitím zadaného kontextu reflexe. |