You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确注册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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:57:24