如何在Microsoft.Extensions.DependencyInjection中使用MAUI IAppInfo
MAUI内置IAppInfo的依赖注入正确配置方式
问题根源在于MAUI的AppInfo是静态类,无法直接作为实现类型注册到DI容器中。正确的做法是利用它的静态Instance属性获取平台特定的IAppInfo实例,再通过DI的工厂方法完成注册。
替换你原来的DI注册代码,改为:
builder.Services.AddSingleton<IAppInfo>(AppInfo.Instance);
或者使用带服务提供者参数的重载写法(效果一致):
builder.Services.AddSingleton<IAppInfo>(sp => AppInfo.Instance);
修改后的完整相关代码示例:
using Microsoft.Extensions.DependencyInjection; using Microsoft.Maui.ApplicationModel; // other stuff MauiAppBuilder builder = MauiApp.CreateBuilder(); builder.Services .AddSingleton<IAppInfo>(AppInfo.Instance) // other services ; // rest of builder code
这样配置后,DI容器会将AppInfo.Instance这个已有的跨平台实例作为单例服务注入,你就可以在项目中通过构造函数注入IAppInfo来获取应用信息,解决之前的跨平台问题。
内容的提问来源于stack exchange,提问作者donaldp
相关产品推荐
相关产品推荐

