CompositionContainer Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Kezeli az alkatrészek összetételét.
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
- Öröklődés
- Megvalósítás
Példák
Az alábbi példában egy CompositionContainer objektum inicializálva van egy katalógussal, és egy rész importálásának kitöltésére szolgál. Ez a példa az attribútumos programozási modellt használja.
[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
Megjegyzések
Egy CompositionContainer objektum két fő célt szolgál egy alkalmazásban. Először nyomon követi, hogy mely részek érhetők el az összeállításhoz és mik a függőségeik, és a rendelkezésre álló részek minden változásakor elvégzi a kompozíciót. Másodszor, megadja azokat a módszereket, amelyekkel az alkalmazás lekéri az összeállított részek példányait, vagy kitölti egy összeállítható rész függőségeit.
Important
Ez a típus implementálja a IDisposable felületet. Ha befejezte a típus használatát, közvetlenül vagy közvetve kell megsemmisítenie. A típus közvetlen ártalmatlanításához hívja meg a Dispose metódust egy try/catch blokkban. Ha közvetve szeretné megsemmisíteni, használjon olyan nyelvi szerkezetet, mint a using (C#-ban) vagy Using (a Visual Basicben). További információ: "Az IDisposable-t megvalósító objektum használata" című szakasz a IDisposable felület témakörében.
Az alkatrészek közvetlenül vagy a tulajdonságon keresztül is elérhetővé tehetők a tároló számára Catalog . Az ebben ComposablePartCatalog felfedezhető összes alkatrész elérhető a tároló számára az import teljesítéséhez, valamint a közvetlenül hozzáadott alkatrészekhez.
A Compose metódus lehetővé teszi a példányosított alkatrészek hozzáadását egy meglévő tárolóhoz. Feltételezve, hogy az összetétel sikeres, ezek az alkatrészek a tárolóból lekért alkatrészekkel lesznek kitöltve, és az exportjuk más alkatrészek számára is elérhető lesz. Az újrakomponzálásként megjelölt importálások regisztrálva lesznek az újrabontáshoz.
A SatisfyImportsOnce módszer lehetővé teszi egy rész számára, hogy a behozatala a tárolóhoz való hozzáadás nélkül megteljen. Ha az összetétel sikeres, a rész behozatala meg lesz töltve, de a rész exportálása nem lesz elérhető más részek számára, és nem lesznek regisztrálva újrabontásra.
CompositionContainer objektumokat mindig el kell helyezni. A metódus meghívásakor Dispose az CompositionContainer objektum az összes létrehozott részt is megsemmisíti.
A CompositionContainer több szálból is elérhető objektumot a isThreadSafe konstruktort használó true paraméterrel CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])kell létrehozni. A teljesítmény kissé lassabb lesz, ha isThreadSafe van true, ezért javasoljuk, hogy ezt a paramétert false egyszálas forgatókönyvekben állítsa be. Az alapértelmezett érték a false.
Warning
A CompositionContainer soha nem importálhatja magát, vagy olyan részt, amely hivatkozik rá. Egy ilyen hivatkozás lehetővé teheti, hogy egy nem megbízható rész hozzáférjen a tároló összes részéhez.
Konstruktorok
| Name | Description |
|---|---|
| CompositionContainer() |
Inicializálja a CompositionContainer osztály új példányát. |
| CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Inicializálja az CompositionContainer osztály új példányát a megadott katalógussal, szálbiztos móddal és exportálási szolgáltatókkal. |
| CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
Inicializálja az CompositionContainer osztály új példányát a megadott katalógussal, beállításokkal és exportálási szolgáltatókkal. |
| CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
Inicializálja az osztály új példányát a CompositionContainer megadott katalógussal és exportálási szolgáltatókkal. |
| CompositionContainer(CompositionOptions, ExportProvider[]) |
Inicializálja az CompositionContainer osztály új példányát a megadott exportálási szolgáltatókkal és beállításokkal. |
| CompositionContainer(ExportProvider[]) |
Inicializálja az osztály új példányát CompositionContainer a megadott exportálási szolgáltatókkal. |
Tulajdonságok
| Name | Description |
|---|---|
| Catalog |
Lekéri azt, ComposablePartCatalog amely hozzáférést biztosít a tároló számára az objektumokhoz Export . |
| Providers |
Lekéri azokat az exportálási szolgáltatókat, amelyek további ComposablePartCatalog objektumokhoz biztosítják a tároló elérését. |
Metódusok
| Name | Description |
|---|---|
| Compose(CompositionBatch) |
Hozzáadja vagy eltávolítja a megadott CompositionBatch alkatrészeket a tárolóból, és végrehajtja az összeállítást. |
| Dispose() |
Az osztály aktuális példánya által használt összes erőforrást felszabadítja CompositionContainer . |
| Dispose(Boolean) |
Felszabadítja a felügyelt erőforrások által CompositionContainer használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetExport<T,TMetadataView>() |
Az exportálást a megadott típusparaméterből származtatott szerződésnévvel adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez. (Öröklődés forrása ExportProvider) |
| GetExport<T,TMetadataView>(String) |
A megadott szerződésnévvel rendelkező exportálást adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez. (Öröklődés forrása ExportProvider) |
| GetExport<T>() |
Az exportálást a megadott típusparaméterből származtatott szerződésnévvel adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez. (Öröklődés forrása ExportProvider) |
| GetExport<T>(String) |
A megadott szerződésnévvel rendelkező exportálást adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez. (Öröklődés forrása ExportProvider) |
| GetExportedValue<T>() |
A megadott típusparaméterből származtatott szerződésnévvel rendelkező exportált objektumot adja vissza. Ha nincs pontosan egy egyező exportált objektum, a rendszer kivételt vet ki. (Öröklődés forrása ExportProvider) |
| GetExportedValue<T>(String) |
A megadott szerződésnévvel rendelkező exportált objektumot adja vissza. Ha nincs pontosan egy egyező exportált objektum, a rendszer kivételt vet ki. (Öröklődés forrása ExportProvider) |
| GetExportedValueOrDefault<T>() |
Lekéri az exportált objektumot a megadott típusparaméterből vagy a megadott típus alapértelmezett értékéből származtatott szerződésnévvel, vagy kivételt jelez, ha egynél több egyező exportált objektum van. (Öröklődés forrása ExportProvider) |
| GetExportedValueOrDefault<T>(String) |
Lekéri az exportált objektumot a megadott szerződésnévvel vagy a megadott típus alapértelmezett értékével, vagy kivételt eredményez, ha egynél több egyező exportált objektum van. (Öröklődés forrása ExportProvider) |
| GetExportedValues<T>() |
Lekéri az összes exportált objektumot a megadott típusparaméterből származtatott szerződésnévvel. (Öröklődés forrása ExportProvider) |
| GetExportedValues<T>(String) |
Lekéri az összes exportált objektumot a megadott szerződésnévvel. (Öröklődés forrása ExportProvider) |
| GetExports(ImportDefinition, AtomicComposition) |
Lekéri az összes olyan exportálást, amely megfelel a megadott importdefiníció és -összetétel feltételeinek. (Öröklődés forrása ExportProvider) |
| GetExports(ImportDefinition) |
Lekéri az összes olyan exportálást, amely megfelel a megadott importálási definíció feltételeinek. (Öröklődés forrása ExportProvider) |
| GetExports(Type, Type, String) |
Lekéri a megadott szerződésnévvel rendelkező összes exportálást. (Öröklődés forrása ExportProvider) |
| GetExports<T,TMetadataView>() |
Lekéri a megadott típusparaméterből származtatott szerződésnévvel rendelkező összes exportálást. (Öröklődés forrása ExportProvider) |
| GetExports<T,TMetadataView>(String) |
Lekéri a megadott szerződésnévvel rendelkező összes exportálást. (Öröklődés forrása ExportProvider) |
| GetExports<T>() |
Lekéri a megadott típusparaméterből származtatott szerződésnévvel rendelkező összes exportálást. (Öröklődés forrása ExportProvider) |
| GetExports<T>(String) |
Lekéri a megadott szerződésnévvel rendelkező összes exportálást. (Öröklődés forrása ExportProvider) |
| GetExportsCore(ImportDefinition, AtomicComposition) |
A megadott ImportDefinition objektum feltételeinek megfelelő összes exportálás gyűjteményét adja vissza. |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| OnExportsChanged(ExportsChangeEventArgs) |
Az eseményt emeli ExportsChanged ki. (Öröklődés forrása ExportProvider) |
| OnExportsChanging(ExportsChangeEventArgs) |
Az eseményt emeli ExportsChanging ki. (Öröklődés forrása ExportProvider) |
| ReleaseExport(Export) |
Felszabadítja a megadott Export objektumot a CompositionContainer. |
| ReleaseExport<T>(Lazy<T>) |
Eltávolítja a megadott exportálást az összetételből, és lehetőség szerint felszabadítja az erőforrásait. |
| ReleaseExports(IEnumerable<Export>) |
Objektumkészletet Export ad ki a CompositionContainer. |
| ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Eltávolítja az exportálások gyűjteményét az összetételből, és lehetőség szerint felszabadítja az erőforrásaikat. |
| ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Eltávolítja az exportálások gyűjteményét az összetételből, és lehetőség szerint felszabadítja az erőforrásaikat. |
| SatisfyImportsOnce(ComposablePart) |
Kielégíti a megadott ComposablePart objektum importálását anélkül, hogy regisztrálja azt újrabontásra. |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) |
Lekéri az összes olyan exportálást, amely megfelel a megadott importálás feltételeinek. (Öröklődés forrása ExportProvider) |
esemény
| Name | Description |
|---|---|
| ExportsChanged |
Akkor fordul elő, ha az exportálás a ExportProvider változás során történik. (Öröklődés forrása ExportProvider) |
| ExportsChanging |
Akkor fordul elő, ha a megadott exportálások változnak. (Öröklődés forrása ExportProvider) |
Bővítő metódusok
| Name | Description |
|---|---|
| ComposeExportedValue<T>(CompositionContainer, String, T) |
Létrehoz egy részt a megadott objektumból a megadott szerződésnév alatt, és a megadott összeállítási tárolóban állítja össze. |
| ComposeExportedValue<T>(CompositionContainer, T) |
Létrehoz egy részt a megadott értékből, és a megadott összeállítási tárolóban állítja össze. |
| ComposeParts(CompositionContainer, Object[]) |
Összeírható részeket hoz létre attribútumalapú objektumok tömbjeiből, és a megadott összeállítási tárolóban állítja össze őket. |
| SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
A megadott részt a megadott összeállítási szolgáltatás használatával, az újrabontás letiltásával és a megadott tükröződési környezet használatával írja össze. |
| SatisfyImportsOnce(ICompositionService, Object) |
A megadott részt a megadott összeállítási szolgáltatással írja össze, és az újrabontás le van tiltva. |