首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Prism Bootstrapper 啟動流程全解析:容器、Region、Shell、模組初始化

     編輯:關於.NET

Bootstrapper 角色

Prism 應用不使用傳統 StartupUri,改由 Bootstrapper.Run() 啟動,掌控完整啟動流程:載入模組、註冊服務、建立 Shell 等。UnityBootstrapper 為預設實作,提供虛擬方法供客製化。

Run 方法核心流程

public void Run(bool useDefaultConfiguration) {
    _useDefaultConfiguration = useDefaultConfiguration;
    ILoggerFacade logger = LoggerFacade;          // 1. 建立日誌
    Container = CreateContainer();                // 2. 建立容器
    ConfigureContainer();                         // 3. 配置容器(註冊基礎服務)
    ConfigureRegionAdapterMappings();             // 4. 配置 Region 適配器
    DependencyObject shell = CreateShell();       // 5. 建立 Shell
    if (shell != null) {
        RegionManager.SetRegionManager(shell, Container.Resolve<IRegionManager>());
    }
    InitializeModules();                          // 6. 初始化模組
}

關鍵步驟詳解

1. 日誌記錄器

內建 TraceLogger 封裝 System.Diagnostics.Trace,全域使用。

2. 容器建立與配置

CreateContainer() 建立 UnityContainer;ConfigureContainer() 註冊 Logger、自身、模組枚舉器,若 useDefaultConfiguration 為 true 則註冊基礎服務(EventAggregator、RegionManager 等)。

3. Region 適配器映射

預設註冊 Selector、ItemsControl、ContentControl 三種容器控制項對應適配器。自訂容器需自行實作 RegionAdapterBase<T> 並重寫 ConfigureRegionAdapterMappings 註冊。

4. Shell 建立

CreateShell() 為抽象方法,必須自行實作:實例化主視窗、呼叫 Show()、回傳 DependencyObject。

5. 模組初始化

取得 IModuleEnumerator 與 IModuleLoader,載入標記為啟動載入的模組:moduleLoader.Initialize(moduleEnumerator.GetStartupLoadedModules())。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved