abp之Domain Services(三)

Domain Services 是领域层的。在core 中就有关于Domain Services的东西。

在core中有好多manager 结束的类,比如UserManager,

  public class UserManager : AbpUserManager<Role, User>

    {//....................................}。

IDomainService最终会实现IDomainService这个接口,这个接口虽然啥也没有,只是说明这个是领域服务。这样他就相当于配置了依赖注入。

用法:在 下面的这个控制器中,注入了Usermanager。下面就直接调用了FindAllAsync方法,这就是UI上层调用领域。

public class AccountController : SimpleTaskAppControllerBase
    {
        private readonly UserManager _userManager;
   //
   }  

        [UnitOfWork]
        protected virtual async Task<List<Tenant>> FindPossibleTenantsOfUserAsync(UserLoginInfo login)
        {
            List<User> allUsers;
            using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
            {
                allUsers = await _userManager.FindAllAsync(login);
            }


            return allUsers
                .Where(u => u.TenantId != null)
                .Select(u => AsyncHelper.RunSync(() => _tenantManager.FindByIdAsync(u.TenantId.Value)))
                .ToList();
        }

Application项目有Application Service。实现了IApplicationService。他实现了一个空的接口ITransientDependency,这和IDomainService一样。

ITestTbAppService 为例,在TestTbsController中,注入了ITestTbAppService,这个是UI调用Application。


阅读更多
换一批

没有更多推荐了,返回首页