MAUI 7 结合 Prism:开源.NET 移动端项目依赖注入与模块化开发实战
·
MAUI 7 结合 Prism:依赖注入与模块化开发实战指南
一、技术栈概述
- .NET MAUI 7:跨平台移动应用框架,支持iOS/Android/Windows
- Prism:企业级应用框架,提供:
- 依赖注入容器(
ContainerExtension) - 模块化架构(
IModule) - 导航服务(
INavigationService) - 事件聚合(
IEventAggregator)
- 依赖注入容器(
二、依赖注入实战
1. 容器配置
在MauiProgram.cs中初始化Prism容器:
var builder = MauiApp.CreateBuilder();
builder.UsePrism(prism =>
prism.RegisterTypes(container =>
{
// 注册服务
container.Register<IApiService, ApiService>();
container.RegisterSingleton<IDatabase, SqliteDatabase>();
})
.OnAppStart(navigation => navigation.NavigateAsync("MainPage"));
2. 构造函数注入
在ViewModel中直接使用服务:
public class MainViewModel : BindableBase
{
private readonly IApiService _apiService;
public MainViewModel(IApiService apiService)
{
_apiService = apiService; // 依赖自动注入
}
}
3. 属性注入
适用于平台特定实现:
[Dependency]
public IDeviceInfo DeviceInfo { get; set; }
三、模块化开发
1. 创建模块
新建类库项目,实现IModule:
public class AuthModule : IModule
{
public void RegisterTypes(IContainerRegistry container)
{
container.Register<IAuthService, AuthService>();
container.RegisterForNavigation<LoginPage>(); // 注册视图
}
}
2. 模块加载
在宿主应用中动态加载模块:
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
moduleCatalog.AddModule<AuthModule>();
moduleCatalog.AddModule<PaymentModule>(InitializationMode.OnDemand); // 按需加载
}
3. 模块通信
通过事件聚合器解耦:
// 发布事件
_eventAggregator.GetEvent<LoginSuccessEvent>().Publish();
// 订阅事件
_eventAggregator.GetEvent<LoginSuccessEvent>().Subscribe(HandleLogin);
四、项目结构示例
MyApp/
├── Core/ # 共享核心逻辑
├── Modules/
│ ├── Auth.Module/ # 认证模块
│ └── Payment.Module/ # 支付模块
├── Platforms/ # 平台特定代码
└── App.xaml.cs # Prism启动配置
五、最佳实践
-
分层注册:
- 基础设施层注册到容器
- 领域服务通过接口暴露
container.RegisterScoped<IUserRepository, UserRepository>(); -
模块设计原则:
- 单一职责:每个模块只处理特定领域
- 低耦合:通过事件聚合器通信
- 按需加载:减少启动时间
-
导航控制:
_navigationService.NavigateAsync("LoginPage?showWarning=true");
六、调试技巧
- 容器验证:
container.Verify(); // 确保所有依赖可解析 - 使用
DryIoc容器时,启用诊断日志:container.GetContainer().WithRules(r => r.WithFactorySelector(Rules.SelectLastRegisteredFactory()))
实战提示:通过模块化可将团队拆分为垂直领域小组,每个小组负责独立模块的开发与测试,大幅提升大型项目的可维护性。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)