xamarin - 如何将 Xamarin.Forms+Prism 应用程序从 Unity 迁移到 DryIoC?

标签 xamarin prism dryioc

我正在尝试将容器更改为 Xamarin.Forms + Prism 应用程序的 DryIOC。 Visual Studio 正在正确编译和启动应用程序,但当应用程序启动时,它不会触发 App.OnInitialized 方法,使应用程序保持在空白屏幕上。

我做了什么?

  1. 从 Android 和共享项目中删除了 Prism.Unity、Unity 和 Microsoft 相关包
  2. 将 DryIoc.dll (v2.10.7) 和 Prism.DryIoc.Forms (v6.3.0.1) 包添加到 Android 和共享项目
  3. 更改 App.xaml 中的 prism xmlns 指向:

    xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"

  4. 将 MainActivity.cs 中的 AndroidInitializer 类更改为:

    公共(public)类 AndroidInitializer : IPlatformInitializer { public void RegisterTypes(IContainer 容器) {} }

我使用 Prism DryIoC 模板创建了一个空白应用程序,它运行良好。此外,我将 App.xaml、App.xaml.cs 和 MainActivity.cs 文件与我的项目中的文件进行了比较,一切正常。

我还能做什么?

最佳答案

如果您要转换,则需要执行以下操作:

1)删除下面三个包 - Prism.Unity.Forms - 团结 - 通用服务定位器

2) 在您的 App.xaml 中将 xml 命名空间更新为 clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms

3) 从您的 App.xaml.cs 中删除 Unity 命名空间,并将其替换为 Prism.DryIocDryIoc。在任何 IPlatformInitializer 实现中执行相同操作,同时将 IUnityContainer 更改为 IContainer

4) 更新任何服务注册,因为签名在 Unity 和 DryIoc 之间不匹配。

5) 将可能直接使用IUnityContainer 的任何服务或您特别拥有的任何东西更新为使用IContainer

6) 删除您的objbin 文件夹,清理并重建。

如果您遇到任何问题,您可以将您的项目与 Hamburger Menu 进行比较或 Tabbed Navigation样本。

更新 从 Prism 7.2 开始,推荐使用的 XML 命名空间很简单 http://prismlibrary.com 这将替换您之前可能拥有的任何 clr-namespace 声明,并且无论您是否使用官方 Prism 包或 Prism 的扩展版本之一。

关于xamarin - 如何将 Xamarin.Forms+Prism 应用程序从 Unity 迁移到 DryIoC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44010725/

相关文章:

ios - Xamarin Forms iOS - 具有多行选择的 PickerView

java - 即使在我的 MAC 上安装了 JRE 8 -"No Java Runtime present,requesting to install "也会显示在终端中

android - 如何在 Xamarin 中获取 GoogleApiClient?

c# - 实例化 PRISM shell 的多个实例

dryioc - 如何从类库中的主应用程序使用 dryioc 容器

xamarin.ios - Xamarin MVVMCross 替代方案

c# - 如何从 Prism 事件聚合器订阅者中调用异步方法?

c# - 如何绑定(bind)到 WPF 应用程序中的 subview 模型属性?

c# - 是否可以将 Azure 函数标准 DI 容器切换为另一个容器?

dependency-injection - 如果您需要同一接口(interface)的不同实例,如何设置 DryIoc 容器?