早上好,我正在开发一个项目,我希望使用以下层:
逻辑层 :负责在您输入的数据和从数据库(存储库)获取的数据之间执行必要的验证。
存储库层 :仅返回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;。
我想实现这个表单,因为我希望更多地解耦逻辑和数据访问。
最后,&#34; IUserAccountRepository &#34;界面位于&#34; 域&#34;项目。
任何帮助都会很受欢迎,非常感谢
答案 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()));
}
我不确定这是否是实施解决方案的最佳方式,但对于我的具体情况,它是否适合我。如果有更好的解决方案,我想知道它。