vma*_*kam 1 c# prism xamarin.forms
我在我的Xamarin.Forms (4.0.0.497661)项目之一中使用Prism.DryIoc.Forms (7.1.0.431)。我在解决其他服务类中的依赖项时遇到问题。
用例:
我们有一个名为 RestService 的服务,它负责处理网络调用,我们还实现了另一个名为 ProfileService 的服务,在其中我们获取用户信息和其他与 Profile 服务相关的内容。我正在考虑解决 ProfileService 中的 RestService 依赖项以进行网络调用。
我已经在App.xaml.csunderRegisterTypes()方法中注册了这两个服务。
如果要访问 Prism.Forms 使用的底层容器。在您的 DryIoc 情况下,您可以轻松进入 RegisterTypes 方法。
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<NavigationPage>();
AppContainer = containerRegistry.GetContainer(); //Assigning actual dryioc container
}
Run Code Online (Sandbox Code Playgroud)
AppContainer 是在 App.xaml.cs 类中声明的属性,如下所示。
注意:- GetContainer 方法是 Prism.DryIoc 命名空间中可用的扩展方法。导入命名空间
using Prism.DryIoc;
//Private and Public variables
public partial class App
{
/// <summary>
/// Actual Dry Ioc Container which can be called and used for manual registering and resolving dependencies.
/// </summary>
public static IContainer AppContainer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用如下所示的 DryIoc 容器。
var authService = App.AppContainer.Resolve<IAuthenticationService>();//you need to register IAuthenticationService inside RegisterType Method.
Run Code Online (Sandbox Code Playgroud)
注意:- 在您调用上面代码行的类中导入 DryIoc 命名空间。
using DryIoc;
Run Code Online (Sandbox Code Playgroud)
快乐编码:)
注意:- 不推荐使用上述方法,因为这会使您的类/代码无法测试。