zoukankan      html  css  js  c++  java
  • ABP 领域服务层学习记录

    在ABP框架中有一个约定,所有的领域服务都应该继承并实现IDomainService接口,在领域层Core创建某一个实体的领域服务类,继承并实现IDomainService接口。在ABP框架中,领域服务类的命名习惯一般时xxxManager。
    namespace MyTestProject.ShoppingGoods
    {
        /// <summary>
        /// 领域服务接口
        /// </summary>
        public interface IGoodsManager:IDomainService
        {
            //书写接口
        }
    }
    namespace MyTestProject.ShoppingGoods
    {
        /// <summary>
        /// 领域服务
        /// </summary>
        public class GoodsManager : DomainService, IGoodsManager
        {
            public GoodsManager()
            {
            }
    
            //实现接口
        }
    }
    在AppService中将IGoodsManager 注入进去
    namespace MyTestProject.ShoppingGoods
    {
        public class GoodssAppService : MyTestProjectAppServiceBase, IApplicationService
        {
            public readonly IGoodsManager _goodsManager;
    
            public GoodssAppService(IGoodsManager goodsManager)
            {
                _goodsManager = goodsManager;
            }
        }
    }
    
    

    上面的这种方式为,当在某个情况下,领域服务不仅要给appservice提供服务,也要向外部提供服务时,需要与上面的方式书写。当只是给appservice提供服务,使用下面的方式就OK了

    namespace MyTestProject.ShoppingGoods
    {
        /// <summary>
        /// 领域服务
        /// </summary>
        public class GoodsManager : DomainService
        {
            private readonly IRepository<Goods, Guid> _goodsRepository;
    
            public GoodsManager(IRepository<Goods, Guid> goodsRepository)
            {
                _goodsRepository = goodsRepository;
            }
    
            //实现
            public async Task<Guid> CreateAsync(Goods goods)
            {
                return await _goodsRepository.InsertAndGetIdAsync(goods);
            }
        }
    }
    在AppService中将GoodsManager 注入进去
    namespace MyTestProject.ShoppingGoods
    {
        public class GoodssAppService : MyTestProjectAppServiceBase, IApplicationService
        {
            //public readonly IGoodsManager _goodsManager;
            public readonly GoodsManager _goodsManager;
    
            public GoodssAppService(GoodsManager goodsManager)
            {
                _goodsManager = goodsManager;
            }
        }
    }
    
    
  • 相关阅读:
    Codeforces 449D:Jzzhu and Numbers
    51nod 1040:最大公约数之和
    51nod 1179:最大的最大公约数
    51nod 1406:与查询
    51nod 1354:选数字
    51nod 1616:最小集合
    Codeforces:Colored Balls
    素性测试
    秒转换成年月日时分秒 和复制文本到剪贴板
    vue项目中获取cdn域名插件
  • 原文地址:https://www.cnblogs.com/moonstars/p/15097850.html
Copyright © 2011-2022 走看看