使用microsoft.extensions.stipentions.stipentionsiondientientientimentientionsiongoss-cross可能会带来一些挑战和已知问题:
1。与MVVMCROSS启动过程不兼容:MVVMCross需要能够通过设置过程解决组件,然后继续注册更多组件。但是,microsoft.extensions.dippertencyIndoction(Ms.di)要求在服务集合上调用`.build()`之前要注册所有组件。这种基本差异使得两个系统不兼容而没有其他解决方法,例如将服务从一个容器转换为另一个容器[1]。
2。两个阶段的启动过程:为了使用MVVMCross来利用Ms.Di,开发人员经常构建MS.DI服务集合,然后将其服务转换为MVVMCross`imvxiocprovider`实例。这种方法引入了两个阶段的启动过程,这可能很麻烦,可能导致其他复杂性和潜在问题[1]。
3。依赖注入局限性:MVVMCross的IOC容器在接口级别处理单例方面,而不是实例化类型。这意味着,如果类实现多个接口,则MVVMCross可能会为每个接口创建单独的实例,除非明确管理[4]。尽管这与DI女士没有直接关系,但它突出了整合不同依赖注入系统时需要仔细管理的需求。
4。升级和兼容性问题:升级MVVMCross版本有时会引入依赖注入的问题,尤其是在使用基本视图模型时。例如,版本之间的构造函数选择逻辑的变化可能会影响依赖性的注入方式[2]。
为了克服这些挑战,开发人员通常会选择增强MVVMCross的功能,而无需更换其核心IOC容器。这允许使用其他依赖注入框架,例如Ms.Di以及MVVMCross,从而在选择IOC提供商[1] [5]方面具有灵活性。但是,这需要仔细的设置和管理,以避免冲突并确保无缝集成。
总而言之,在使用microsoft.extensions.sextensions.septencyentions。与MVVMCross进行依赖性,但需要仔细考虑启动过程,潜在的不兼容以及仔细管理依赖项,以避免已知问题。
引用:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/deppentency-inviention/extensions-depentencyIntive
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dipendency-indoction-inmoxention-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dipendentimendentigention-package-in-xamarin-forms-mvvm-applications-part-part-part-part-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/depentency-indoction