設計工具擴充性範例運作方式
Designer Extensibility 範例中的每個專案都包含兩個類別:Extender類別和擴充提供者類別。 這些類別是設計來擴充功能,並定義 ItineraryDsl 模型元素的屬性。
擴充提供者類別衍生自ExtensionProviderBase類別,並且已使用識別延伸模組及其用途的屬性來套用ExtensionProviderAttribute。 當使用者在模型專案上設定 Extender 屬性時,這些值會顯示給設計工具中的使用者。 當 擴充提供者 類別初始化時,它們會呼叫 ExtensionProviderBase 的建構函式,並將其傳遞給擴充項類別的類型。
Extender類別已套用ObjectExtender屬性;至ObjectExtender屬性,他們會傳遞其延伸的 ItineraryDsl中物件的類型。 這些類別的基類會根據擴充項的類型而有所不同。 若為 Resolver 擴充器,基類為ObjectExtender < Resolver >。 對於路線服務擴充項,基類為 ItineraryServiceExtenderBase。 在 Extender 類別中,下列屬性會套用至屬性:屬性方格中適當顯示所需的屬性、用於驗證用途的 Microsoft 企業程式庫中所包含的屬性、適當序列化所需的屬性,以及決定屬性保存方式的屬性。
當這些元件編譯並放置在 Lib 資料夾中時,設計工具會在執行時間載入和快取這些元件。 當需要擴充器時, ItineraryDsl 會藉由檢查匯出的類型和這些類型的屬性,使用反映從快取載入適用的元件。