1.创建空白解决方案

2.创建Infrastructure解决方案文件夹

3.在Infrastructure解决方案文件夹下面 添加一个新的项目

这个项目是 .net core的类库项目,取名Util,asp.net core的配置文件的信息是经常使用的信息,所以要建一个关于其配置文件读写的类 AppSetting.cs

和asp.net不同 core的配置文件是json,前者是config的xml文件。读写webapi的json文件的key对应的value 需要引入一个IConfigurationSection类型,这个类型需要引入Nuget包Microsoft.Extension.Configuration。在这个类中封装一个读json的方法,代码如下:

using Microsoft.Extensions.Configuration;

namespace Util
{ public class AppSetting
{
//之所以搜使用静态类,是因为这是一个工具类
public static IConfigurationSection appsections = null;
public static void SetAppSetting(IConfigurationSection section)
{
appsections = section;
} /// <summary>
/// 根据key从配置文件中读取key对应的value
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetAppSetting(string key)
{
string str = "";
if (appsections.GetSection(key) != null)
{
str = appsections.GetSection(key).Value;
}
return str; }
}
}

4 在返回数据给webapi的时候,应该封装一个专门的数据类型给webapi,为此新建一个ResultEntity类ResultEntity.cs,代码如下:

namespace Util
{
/// <summary>
/// 返回给webapi使用的数据实体
/// </summary>
/// <typeparam name="T">视图模型的类型</typeparam>
public class ResultEntity<T>
{
public bool IsSuccess { get; set; }
//附带信息
public string Msg { get; set; }
public T Data { get; set; }
public int ErrorCode { get; set; } /// <summary>
/// 如果T是一个List集合 这里可以存数据的条数
/// </summary>
public int count { get; set; } }
}

封装一个应用服务基类,这个基类提供返回上面ResultEntity类型数据的方法,使得继承了上面基类的应用服务 统一返回ResultEntity给webapi

using System;

namespace Util
{
/// <summary>
/// 所有应用服务的积基类
/// </summary>
public class BaseAppSrv
{
/// <summary>
/// 所有应用服务的基类都要返回数据给webapi 这里做一个封装
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="vobj"></param>
/// <param name="msg"></param>
/// <param name="errorcode"></param>
/// <returns></returns>
protected ResultEntity<T> GetResultEntity<T>(T vobj,string msg="未成功获取到对象",int errorcode=)
{
ResultEntity<T> resultEntity = new ResultEntity<T>();
var issuccess = true;
if (vobj is int&& Convert.ToUInt32(vobj)<)
{
issuccess = false;
}
else if(vobj is bool&& !Convert.ToBoolean(vobj))
{
issuccess = false;
}
else if(vobj is string && string.IsNullOrEmpty(Convert.ToString(vobj)))
{
issuccess = false;
}
if (issuccess==false)
{
resultEntity.Msg = msg;
resultEntity.ErrorCode = ;
}
resultEntity.IsSuccess = issuccess;
resultEntity.Data = vobj;
return resultEntity;
}
}
}

DDD实战1的更多相关文章

  1. DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)

    要实现软件设计.软件开发在一个统一的思想.统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束. 虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍 ...

  2. DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)

    从这篇文章开始,我们根据前面的DDD理论与DDD框架的约束,正式进入直销系统案例的开发. 本篇文章主要讲产品上下文中的领域层的主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要 ...

  3. DDD实战进阶第一波(六):开发一般业务的大健康行业直销系统(实现产品上下文仓储与应用服务层)

    前一篇文章我们完成了产品上下文的领域层,我们已经有了关于产品方面的简单领域逻辑,我们接着来实现产品上下文关于仓储持久化与应用层的用例如何来协调 领域逻辑与仓储持久化. 首先大家需要明确的是,产品上下文 ...

  4. DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)

    这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...

  5. DDD实战进阶第一波(九):开发一般业务的大健康行业直销系统(实现经销商上下文仓储与领域逻辑)

    上篇文章主要讲述了经销商上下文的需求与POCO对象,这篇文章主要讲述该界限上下文的仓储与领域逻辑的实现. 关于界限上下文与EF Core数据访问上下文参考产品上下文相应的实现,这里不再累述. 因为在经 ...

  6. DDD实战进阶第一波(十):开发一般业务的大健康行业直销系统(实现经销商登录仓储与逻辑)

    上一篇文章主要讲了经销商注册的仓储和领域逻辑的实现,我们先把应用服务协调完成经销商注册这部分暂停一下,后面文章统一讲. 这篇文章主要讲讲经销商登录的仓储和相关逻辑的实现. 在现代应用程序前后端分离的实 ...

  7. DDD实战进阶第一波(十一):开发一般业务的大健康行业直销系统(实现经销商代注册用例与登录令牌分发)

    前两篇文章主要实现了经销商代注册的仓储与领域逻辑.经销商登录的仓储与相关逻辑,这篇文章主要讲述经销商代注册的用例与经销商登录的查询功能. 一.经销商代注册用例 在经销商代注册用例中,我们需要传递经销商 ...

  8. DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述)

    本系列文章 DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述) DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一) 近年来,关于如何开发基于 ...

  9. DDD实战进阶第一波(十五):开发一般业务的大健康行业直销系统(总结篇)

    前面我们花了14篇的文章来给大家介绍经典DDD的概念.架构和实践.这篇文章我们来做一个完整的总结,另外生成一个Api接口文档. 一.DDD解决传统的开发的几大问题: 没有描述需求的设计模型:而是直接通 ...

  10. DDD实战进阶第一波(十四):开发一般业务的大健康行业直销系统(订单上下文应用服务用例与接口)

    上一篇文章我们主要讲了订单上下文的领域逻辑,在领域逻辑中完成了订单项的计算逻辑.订单的计算逻辑以及如何生成相应的实体code,这篇文章我们通过 在应用服务中实现一个下单的用例,来将这些领域逻辑以及仓储 ...

随机推荐

  1. 【Codeforces Round #440 (Div. 2) A】 Search for Pretty Integers

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先枚举一个数字的情况. 再枚举两个数的情况就好. [代码] #include <bits/stdc++.h> #defi ...

  2. 取消UITableViewCell的背景色

    //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色,也就是系统默认的颜色 cell.selectionStyle = ...

  3. Nginx+Tomcat的配合使用

    近期尝试使用tomcat和Nginx进行配合做负载均衡和静态与动态资源分配的Demo,期间遇到很多有意思的地方和知识短板,特此记录 一:什么是Nginx? Nginx也是一款服务器,我们常用它做如:反 ...

  4. js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)

    js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...

  5. 使用ionic3快速开发webapp(一)

    Ionic可以让我们使用web技术快速构建接近原生体验的跨平台移动应用. 一.安装ionic 1.需要先安装 Node.js(版本8.x之上): 2.安装cordova 和 ionic: $ npm ...

  6. kernel-char设备的建立

    kernel下的设备分成了一些类,char block char.. 这里就贴出来一个样例能够建立一个char设备 ,抛砖引玉吧 这是kernel中的 drivers/char/msm_smd_pkt ...

  7. 【苦读官方文档】2.Android应用程序基本原理概述

    官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存 ...

  8. [Angular] Subscribing to the valueChanges Observable

    For example we have built a form: form = this.fb.group({ store: this.fb.group({ branch: '', code: '' ...

  9. 【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysqlclient

    [送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够利运用到系统中,由此简化系统的开发,是其架构生涯的第一步 ...

  10. poj 2965 The Pilots Brothers&#39; refrigerator

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18040 ...