DDD实战1

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=0)
        {
            ResultEntity<T> resultEntity = new ResultEntity<T>();
            var issuccess = true;
            if (vobj is int&& Convert.ToUInt32(vobj)<0)
            {
                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 = 200;
            }
            resultEntity.IsSuccess = issuccess;
            resultEntity.Data = vobj;
            return resultEntity;
        }
    }
}

   

原文地址:https://www.cnblogs.com/wholeworld/p/8749292.html