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;
            }
        }
    }
    
    
  • 相关阅读:
    WPF 如何引入外部样式
    jQuery插件-json2.js
    前端js几种加密/解密方法
    asp.net Web项目中使用Log4Net进行错误日志记录
    UpdateProgress
    UpdatePanel的简单用法(非嵌套)
    UpdatePanel的用法详解
    asp.net调用前台js调用后台代码分享
    JVM中的运行参数
    为什么要对jvm进行优化
  • 原文地址:https://www.cnblogs.com/moonstars/p/15097850.html
Copyright © 2011-2022 走看看