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;
            }
        }
    }
    
    
  • 相关阅读:
    【Qt】splitter
    android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件
    poj 1879 Truck History
    在LinuxMint中对firefox进行手动安装flash插件
    王立平--include在Android中的应用
    【IPC进程间通讯之二】管道Pipe
    我组织类时无意间遵守了依赖倒置原则
    百度2016笔试(算法春招实习)
    制作翻转效果动画
    vim常用命令行备忘总结
  • 原文地址:https://www.cnblogs.com/moonstars/p/15097850.html
Copyright © 2011-2022 走看看