Prism Xamarin.Forms使用Repository + Logic Patterns + DI

时间:2017-12-12 15:01:24

标签: prism

早上好,我正在开发一个项目,我希望使用以下层:

逻辑层 :负责在您输入的数据和从数据库(存储库)获取的数据之间执行必要的验证。

存储库层 :仅返回SQLite数据库中的数据。它没有验证逻辑。

Prism如何使用DI(依赖注入)和IoC(控制反转)来注册实例。我使用以下代码来实例化Portable项目中的逻辑层,这非常好。

protected override void ConfigureContainer()
{
   base.ConfigureContainer();
   Container.RegisterInstance<IAccountLogic>(new AccountLogic());   
}

构造函数中的ViewModel Instanced

public LoginViewModel(INavigationService navigationService, IPageDialogService pageDialogService, IAccountLogic accountLogic = null)
{
   this.navigationService = navigationService;
   this.pageDialogService = pageDialogService;
   this.accountLogic = accountLogic;
}

我的问题是,我应该如何为存储库模式注册我的实例?我的存储库是&#34; IUserAccountRepository &#34;。

我想实现这个表单,因为我希望更多地解耦逻辑和数据访问。

enter image description here

最后,&#34; IUserAccountRepository &#34;界面位于&#34; &#34;项目。

任何帮助都会很受欢迎,非常感谢

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。

在逻辑层中,我创建了一个构造函数,它接收我的存储库实例作为参数。如下面的代码所示。

public AccountLogic(IUserAccountRepository userAccountRepository)
    {
        if (userAccountRepository == null)
            throw new ArgumentNullException();

        _userAccountRepository = userAccountRepository;
    }

然后在Container.RegisterInstance中,我传递给AccountLogic类,这是我想要访问的存储库的新内容。

protected override void ConfigureContainer()
{
    base.ConfigureContainer();

    Container.RegisterInstance<IAccountLogic>(new AccountLogic(new UserAccountRepository()));
}

我不确定这是否是实施解决方案的最佳方式,但对于我的具体情况,它是否适合我。如果有更好的解决方案,我想知道它。

相关问题