如何在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
相关产品推荐
相关产品推荐

