You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prism 8中如何通过PrismBootstrapper从.config文件注册类型?

Prism 8 从XAML配置文件注册类型的实现方法

在Prism 8中,若基于Unity容器(对应Prism 6默认容器类型),通过PrismBootstrapper(具体为UnityBootstrapper)派生类实现从XAML配置文件注册类型,需按以下步骤操作:

1. 配置文件准备

在项目的App.config中定义Unity配置节及类型注册规则:

<configuration>
  <configSections>
    <!-- 注册Unity配置节 -->
    <section name="unity" 
             type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, 
                   Microsoft.Practices.Unity.Configuration"/>
  </configSections>

  <unity>
    <containers>
      <!-- 定义容器配置,name需与代码中对应 -->
      <container name="AppContainer">
        <!-- 示例:注册接口与实现类的映射 -->
        <register type="MyApp.IMyService" mapTo="MyApp.MyService"/>
        <!-- 可添加更多注册规则 -->
      </container>
    </containers>
  </unity>
</configuration>

2. 安装必要NuGet包

确保项目已安装以下包:

  • Prism.Unity:Prism 8的Unity容器集成包
  • Microsoft.Practices.Unity.Configuration:Unity配置文件支持包

3. 在Bootstrapper中加载配置

重写UnityBootstrapper的ConfigureContainer方法,手动读取配置节并加载到容器中:

using Prism.Unity;
using System.Configuration;
using Microsoft.Practices.Unity.Configuration;
using System.Windows;

namespace MyApp
{
    public class AppBootstrapper : UnityBootstrapper
    {
        // 创建Shell窗口
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        // 初始化Shell
        protected override void InitializeShell()
        {
            Application.Current.MainWindow.Show();
        }

        // 配置容器,加载配置文件
        protected override void ConfigureContainer()
        {
            // 先执行基类的容器配置逻辑
            base.ConfigureContainer();

            // 读取配置文件中的Unity配置节
            var unityConfigSection = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;
            
            // 将配置中的注册规则加载到当前容器(匹配配置中定义的容器名称)
            unityConfigSection?.Configure(Container, "AppContainer");
        }
    }
}

补充说明

  • 若使用DryIoc等其他容器:DryIoc原生不支持XAML配置文件加载,需自行解析配置内容并调用容器的注册方法实现,或改用代码注册方式。
  • Prism 8中已移除Prism 6里直接的container.LoadConfiguration扩展方法,需通过Unity配置节的Configure方法完成配置加载。

内容的提问来源于stack exchange,提问作者A.G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:40:02