如何正确注册MAUI Essentials接口实现依赖注入
.NET MAUI Essentials 依赖注入注册正确方式
你使用类自带的Default/Current静态属性注册对应接口的写法是完全正确的,这也是当前MAUI正式版本官方推荐的注册方式。
- 视频中演示的直接注册
GeolocationImplementation实现类的写法仅适用于早期MAUI预览版本。正式版发布后,所有Essentials功能的平台实现类均被标记为internal访问级别,无法在用户业务代码中直接引用,因此该写法已经失效。 - Essentials类暴露的
Default/Current静态属性本身就是对应接口的全局单例实现,将其注册到DI容器后,使用效果和直接注册public实现类完全一致,不会破坏代码可测试性:单元测试场景下你依然可以正常注入自定义的Mock实现替换原生逻辑。
常用注册示例:
// 注册地理定位接口 builder.Services.AddSingleton<IGeolocation>(_ => Geolocation.Default); // 注册网络连通性接口 builder.Services.AddSingleton<IConnectivity>(_ => Connectivity.Current); // 其余Essentials接口注册逻辑相同,参照类的公开静态属性即可,例如: // builder.Services.AddSingleton<IClipboard>(_ => Clipboard.Default); // builder.Services.AddSingleton<IPreferences>(_ => Preferences.Default);
小提示:不同Essentials类的单例静态属性命名略有差异,部分用
Default、部分用Current,写代码时参照IDE的智能提示选择即可,不要自行反射构造internal的实现类,避免版本迭代出现兼容问题。
内容的提问来源于stack exchange,提问作者GooseZA
相关产品推荐
相关产品推荐

