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

如何在UWP应用中使用依赖注入?附Autofac配置实践

在UWP应用中使用Autofac进行依赖注入配置

我最近开发UWP应用时,用Autofac来管理依赖注入,把配置逻辑都放在了App实例里,确保应用启动时就完成所有服务的注册。我的代码大致是这样的:

public sealed partial class App {
    private readonly IFacade m_facade;

    public App() {
        InitializeComponent();
        m_facade = InitializeDependencies();
        Suspending += OnSuspending;
    }

    private IFacade InitializeDependencies() {
        var containerBuilder = new ContainerBuilder();
        // 注册所有服务的平台特定实现
        containerBuilder.RegisterType<LoggingService>()
            .As<ILoggingService>()
            .SingleInstance(); // 根据业务需求设置生命周期,比如单例

        // 注册核心Facade(假设它依赖已注册的服务)
        containerBuilder.RegisterType<AppFacade>()
            .As<IFacade>()
            .SingleInstance();

        // 构建容器并解析核心Facade实例
        var container = containerBuilder.Build();
        return container.Resolve<IFacade>();
    }

    private void OnSuspending(object sender, SuspendingEventArgs e) {
        // 应用挂起时的处理逻辑
        var deferral = e.SuspendingOperation.GetDeferral();
        // TODO: 保存应用状态并停止后台活动
        deferral.Complete();
    }
}

这里有几个值得注意的细节:

  • 把依赖初始化抽成InitializeDependencies方法,让App构造函数更简洁,逻辑更清晰
  • 注册服务时可以灵活指定生命周期,比如SingleInstance()能保证服务全局只有一个实例
  • 核心的IFacade实例存在App类的私有成员中,后续页面或组件可以通过App实例获取它,也可以直接通过Autofac容器解析其他所需服务

内容的提问来源于stack exchange,提问作者Kzryzstof

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:57:32