• 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;
            }
        }
    }
    
    
  • 相关阅读:
    N in 1 & 多重引导光盘制作
    可启动 ISO 合并、Windows 安装光盘合集
    VS 2005 VC++ 文件类型
    Windows 无人值守安装应答文件详解
    30种下载Youtube视频的方法
    解释YOUTUBE FLV 地址
    Windows下进程通信方式[转]
    进程通讯 DELPHI的类实现
    c#.net常用函数列表
    Javascript, How to make a Dress Up Game (Drag and Drop)
  • 原文地址:https://www.cnblogs.com/moonstars/p/15097850.html
Copyright © 2020-2023  润新知