CompositionContainer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
管理元件組合。
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
- 繼承
- 實作
範例
以下範例中,物件 CompositionContainer 以目錄初始化,並用來填補零件的匯入。 此範例使用了屬性化程式設計模型(Attributed Programming Model)。
[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
備註
CompositionContainer物件在應用程式中有兩個主要功能。 首先,它會追蹤哪些部分可用於組合,以及它們的相依關係,並在可用部分集合改變時執行組合。 其次,它提供了應用程式取得組合部分實例或填充可組合部分相依性的方法。
這很重要
此類型會實作 IDisposable 介面。 當您完成使用這個物品後,應直接或間接地處理它。 若要直接處置類型,請在 Disposetry/ 區塊中呼叫其 catch 方法。 若要間接處置它,請使用語言建構,例如 using (C#) 或 Using (在 Visual Basic 中)。 如需詳細資訊,請參閱介面主題中的
零件可以直接或透過 Catalog 物業提供給貨櫃。 所有在貨 ComposablePartCatalog 櫃中發現的零件都可以直接提供給貨櫃來完成進口,還有直接添加的零件。
此 Compose 方法允許將實例化的零件加入現有容器中。 假設合成成功,這些零件的進口品將被從容器回收的零件填滿,出口品則可供應給其他零件。 標示為可重組的進口將被註冊重組。
此 SatisfyImportsOnce 方法允許零件在不加入容器的情況下被填滿進口貨物。 若組合成功,該零件的進口將被填補,但該零件的出口將無法提供給其他零件,且不會有進口貨物登記重組。
CompositionContainer 物品應該始終被處理掉。 當 Dispose 方法被呼叫時,物件 CompositionContainer 也會丟棄它所建立的所有部分。
CompositionContainer一個可從多個執行緒存取的物件,isThreadSafe必須使用CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])建構子將參數設為 true。 當 isThreadSafe 為 true時,效能會稍微慢一些,因此我們建議你在單執行緒情境下將此參數設為 。false 預設值為 false。
警告
CompositionContainer A 絕對不應該匯入自己,或是有參考的零件。 這樣的參考可能讓不受信任的部分取得容器中的所有部分。
建構函式
| 名稱 | Description |
|---|---|
| CompositionContainer() |
初始化 CompositionContainer 類別的新執行個體。 |
| CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
初始化該類別的新實例 CompositionContainer ,使用指定的目錄、執行緒安全模式及匯出提供者。 |
| CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
初始化類別的新實例 CompositionContainer ,並使用指定的目錄、選項和匯出提供者。 |
| CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
初始化該類別的新實例 CompositionContainer ,並使用指定的目錄與匯出提供者。 |
| CompositionContainer(CompositionOptions, ExportProvider[]) |
初始化該類別的新實例 CompositionContainer ,並使用指定的匯出提供者與選項。 |
| CompositionContainer(ExportProvider[]) |
初始化該類別的新實例 CompositionContainer ,使用指定的匯出提供者。 |
屬性
| 名稱 | Description |
|---|---|
| Catalog |
取得 ComposablePartCatalog 提供容器存取 Export 物件的 。 |
| Providers |
取得提供容器存取額外 ComposablePartCatalog 物件的匯出提供者。 |
方法
事件
| 名稱 | Description |
|---|---|
| ExportsChanged |
當匯出 ExportProvider 變更時會發生。 (繼承來源 ExportProvider) |
| ExportsChanging |
當提供的出口資料變動時,會發生這種情況。 (繼承來源 ExportProvider) |
擴充方法
| 名稱 | Description |
|---|---|
| ComposeExportedValue<T>(CompositionContainer, String, T) |
從指定的物件中建立一個部分,並以指定的合約名稱進行,並將其組合在指定的組合容器中。 |
| ComposeExportedValue<T>(CompositionContainer, T) |
從指定的值建立一個零件,並將其組合到指定的組合容器中。 |
| ComposeParts(CompositionContainer, Object[]) |
從一組屬性物件陣列中建立可組合的部分,並在指定的組合容器中組合。 |
| SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
使用指定的合成服務組合指定部分,關閉重組並使用指定的反射上下文。 |
| SatisfyImportsOnce(ICompositionService, Object) |
使用指定的合成服務組合指定部分,且關閉重組功能。 |