将Xamarin.Forms项目的Autofac依赖注入转换为.NET MAUI依赖注入
将Autofac依赖注入转换为.NET MAUI原生DI
原Autofac代码的作用是:注册包含IViewModel的程序集中,所有实现了IViewModel的类,以自身类型作为服务类型注入。对应的.NET MAUI原生DI实现如下:
在MauiProgram.cs的CreateMauiApp方法中,添加以下代码:
var assembly = typeof(IViewModel).Assembly; // 遍历程序集中所有实现IViewModel的非抽象类 foreach (var type in assembly.GetTypes() .Where(t => typeof(IViewModel).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface)) { // 默认注册为Transient生命周期,可根据需求改为AddScoped/AddSingleton builder.Services.AddTransient(type); }
说明
- 原Autofac的
AsSelf()对应原生DI中直接注册具体类型(当请求该具体类型时,DI容器会返回其实例) - 生命周期默认使用
AddTransient,如果原项目使用了其他生命周期(如Scoped/Singleton),可替换为对应的AddScoped或AddSingleton - 代码过滤了抽象类和接口,避免注册无效类型
内容的提问来源于stack exchange,提问作者user20694704
相关产品推荐
相关产品推荐

