通用程序返回结果类 ApplicationResult.cs
using System.Collections.Generic;
using System.Linq; namespace System
{
/// <summary>
/// 表示应用程序在执行后的结果。
/// </summary>
public class ApplicationResult
{
static readonly ApplicationResult _success = new ApplicationResult(true); /// <summary>
/// 初始化 <see cref="ApplicationResult"/> 类的新实例。
/// </summary>
/// <param name="success">表示应用程序执行的结果是否成功。</param>
protected ApplicationResult(bool success)
{
this.Succeeded = success;
} /// <summary>
/// 使用带有错误的字符串数组初始化 <see cref="ApplicationResult"/> 类的新实例。
/// </summary>
/// <param name="errors">可选的错误字符串数组。</param>
public ApplicationResult(params string[] errors)
: this(errors.AsEnumerable())
{ } /// <summary>
/// 使用带有错误的字符串集合初始化 <see cref="ApplicationResult"/> 类的新实例。
/// </summary>
/// <param name="errors">错误字符串集合。</param>
public ApplicationResult(IEnumerable<string> errors)
: this(false)
{
this.Errors = errors;
} /// <summary>
/// 获取一个布尔值,表示当前的执行是否成功。
/// </summary>
/// <value>
/// 若执行成功,则为 <c>true</c>;否则为 <c>false</c>。
/// </value>
public bool Succeeded { get; private set; } /// <summary>
/// 获取一个字符串集合,表示返回的错误信息。
/// </summary>
/// <value>
/// 这是一个集合,包含所有的错误信息。
/// </value>
public IEnumerable<string> Errors { get; private set; } /// <summary>
/// 表示当前操作执行成功。
/// </summary>
public static ApplicationResult Success => _success; /// <summary>
/// 表示当前操作执行失败。
/// </summary>
/// <param name="errors">因导致失败的错误字符串数组。</param>
/// <returns>当前的 <see cref="ApplicationResult"/> 实例。</returns>
public static ApplicationResult Failed(params string[] errors) => new ApplicationResult(errors); /// <summary>
/// 表示当前操作执行失败。
/// </summary>
/// <param name="errors">因导致失败的错误字符串集合。</param>
/// <returns>当前的 <see cref="ApplicationResult"/> 实例。</returns>
public static ApplicationResult Failed(IEnumerable<string> errors)
=> Failed(errors.ToArray());
} /// <summary>
/// 表示应用程序在执行后的结果并附带自定义对象。
/// </summary>
/// <typeparam name="T">一个可在结果返回的数据类型。</typeparam>
/// <seealso cref="ApplicationResult" />
public class ApplicationResult<T> : ApplicationResult
{
/// <summary>
/// 使用自定义数据初始化 <see cref="ApplicationResult{T}"/> 类的新实例。
/// </summary>
/// <param name="data">这是返回的数据。</param>
protected ApplicationResult(T data)
{
this.Data = data;
} /// <summary>
/// 初始化 <see cref="ApplicationResult{T}"/> 类的新实例。
/// </summary>
/// <param name="success">表示应用程序执行的结果是否成功。</param>
protected ApplicationResult(bool success) : base(success) { } /// <summary>
/// 获取一个泛型的值,表示应用程序成功或失败时所需要的任意数据值。
/// </summary>
/// <value>
/// 任意数据。
/// </value>
public T Data { get; private set; } /// <summary>
/// 设置成功或失败时想要在返回时获取的数据。
/// </summary>
/// <param name="data">要设置的数据。</param>
/// <returns><see cref="ApplicationResult{T}"/> 实例。</returns>
public ApplicationResult<T> SetData(T data)
{
this.Data = data;
return this;
} /// <summary>
/// 表示当前操作执行成功。
/// </summary>
/// <returns><see cref="ApplicationResult{T}"/> 实例。</returns>
public static new ApplicationResult<T> Success => new ApplicationResult<T>(true);
}
}
通用程序返回结果类 ApplicationResult.cs的更多相关文章
- [转]DbHelper通用数据库访问帮助类
之前我一直都是在博客园中查看各位高手的博文,确实学到了不少知识,不过比较少写博客,现在就把我自己在项目实施过程中使用到比较好的技术框架写出来,希望能让更多的人了解和学习. 通常我们在开发使用数据库访问 ...
- Sprite Kit教程:制作一个通用程序 2
注1:本文译自Sprite Kit Tutorial: Making a Universal App: Part 2 目录 动画的定义:可行性 属性列表 添加游戏逻辑 添加音效 何去何从 上一篇文章中 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- 【转】24Cxx 系列EEPROM通用程序及应用
关于I2C 学习的时候介绍得最多的就是24C02 这里存储EEPROM了,但学的时候基本只是讲讲简单的I2C 的总线数据传输而已,即使先gooogle上搜索也绝大部分这这样的文章,很少有说到如何在实际 ...
- 使用Prism6 建立 Windows 10 通用程序.
使用Prism6 建立 Windows 10 通用程序. 目标: 使用prism6,建立Windows 通用程序项目. 1, 解决方案—添加新建项目—通用—空白应用—输入名称—确定—确定 2 ,引用上 ...
- Win10通用程序 UWP版HtmlAgilityPack UWP应用使用示例
Win10 UWP版HtmlAgilityPack,UWP应用使用示例下载. Win10 发布了一个多星期,sdk是随着一起发布的,我安装好vs2015和sdk 开发UWP 通用程序. 在做网络解析的 ...
- 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)
在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- wemall app商城源码中基于PHP的通用的树型类代码
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...
随机推荐
- 前端框架VUE----组件的创建
vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例中使用组件吧! ...
- GoldenGate for bigdata 12.3.1.1
GoldenGate for big data 12.3.1.1在8.18已经发布,主要新特性如下: 1. 新目标:Amazon Kinesis 2. 新目标:使用Kafka Connect API及 ...
- mysqldump 使用小结
语法: 备份某个数据库: mysqldump -uroot -p*** [options] –-databases DB_name > back_db_name.sql --databases: ...
- K8S学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像
0x00 添加docker官方的国内镜像 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ...
- Linux内核Socket参数调优
可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中.IPV4协议栈的sysctl参数主要是sysctl.net.core.sy ...
- shell脚本一键安装redis集群[最终版]
直接上shell了. #!/bin/bash #---------------------------------------------------------------------------- ...
- luogu 3790 文艺数学题 - 矩阵树定理 - 容斥原理
题目传送门 戳我来传送 题目大意 给定一个图,问它的所有生成树的边权的最大公约数之和. 可以考虑计算边权的最大公约数为$i$的生成树的个数$f(i)$,最后累加答案. 然后考虑这样的生成树的个数怎么求 ...
- centos7 update network time
yum install -y ntp crontab -e */5 * * * * /usr/bin/ntpdate ntp.api.bz ### ntp.api.bz 是一组NTP集群服务器,之 ...
- topcoder srm 715 div1 -23
1.一个计算器,它执行的是一个只包含‘+’,‘-’的字符串$s$.初始化值为0,每遇到一个‘+’增加1,否则减少1.并保存运算过程的最大最小值$Max,Min$,最后的答案是$Max-Min$.比如$ ...
- RabbitMQ 入门指南——安装
RabbitMQ好文 Rabbitmq Java Client Api详解 tohxyblog-博客园-rabbitMQ教程系列 robertohuang-CSDN-rabbitMQ教程系列 Rabb ...