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的更多相关文章

  1. [转]DbHelper通用数据库访问帮助类

    之前我一直都是在博客园中查看各位高手的博文,确实学到了不少知识,不过比较少写博客,现在就把我自己在项目实施过程中使用到比较好的技术框架写出来,希望能让更多的人了解和学习. 通常我们在开发使用数据库访问 ...

  2. Sprite Kit教程:制作一个通用程序 2

    注1:本文译自Sprite Kit Tutorial: Making a Universal App: Part 2 目录 动画的定义:可行性 属性列表 添加游戏逻辑 添加音效 何去何从 上一篇文章中 ...

  3. C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题

    C#字符串数组排序   //排序只带字符的数组,不带数字的 private   string[]   aa   ={ "a ", "c ", "b & ...

  4. 【转】24Cxx 系列EEPROM通用程序及应用

    关于I2C 学习的时候介绍得最多的就是24C02 这里存储EEPROM了,但学的时候基本只是讲讲简单的I2C 的总线数据传输而已,即使先gooogle上搜索也绝大部分这这样的文章,很少有说到如何在实际 ...

  5. 使用Prism6 建立 Windows 10 通用程序.

    使用Prism6 建立 Windows 10 通用程序. 目标: 使用prism6,建立Windows 通用程序项目. 1, 解决方案—添加新建项目—通用—空白应用—输入名称—确定—确定 2 ,引用上 ...

  6. Win10通用程序 UWP版HtmlAgilityPack UWP应用使用示例

    Win10 UWP版HtmlAgilityPack,UWP应用使用示例下载. Win10 发布了一个多星期,sdk是随着一起发布的,我安装好vs2015和sdk 开发UWP 通用程序. 在做网络解析的 ...

  7. 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)

    在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...

  8. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  9. wemall app商城源码中基于PHP的通用的树型类代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

随机推荐

  1. linux 环境RPM 安装MYSQL5.6

    linux 环境RPM 安装MYSQL5.6 系统环境 CentOS7.2 1.关闭selinux 服务[SELinux是一种基于域-类型 模型(domain-type)的强制访问控制(MAC)安全系 ...

  2. scanf,fscanf,sscanf的区别

    scanf是从文件中读 sscanf是从字符串中读 scanf是从键盘输入中读   fread :以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止.fscanf :格式 ...

  3. Java学习技术分享:Java中的原子操作

    学习java需要有一套完整的学习线路,需要有条理性,当下学习java已经有一段时间了,由当初的懵逼状态逐渐好转,也逐渐养成了写技术学习笔记的习惯,今天总结了一下java中的原子操作. 1.Java中的 ...

  4. windows下使用命令行运行PHP

    之前一直想,在命令行下能不能运行PHP程序,像C语言一样可以通过命令行拿到参数.今天尝试了一下发现可感觉挺有意思的,平时写着程序玩的时候就可以这样用,下面让咱么来看看怎么做的.我的环境是 php5.6 ...

  5. Introduction to the Standard Directory Layout

    Having a common directory layout would allow for users familiar with one Maven project to immediatel ...

  6. Python3 离线安装TensorFlow包

    Python3 离线安装TensorFlow包 1,下载包 官网地址:https://pypi.org/project/tensorflow/1.1.0rc2/#files 清华镜像:https:// ...

  7. Mysql 存储过程中使用多游标

    Mysql 存储过程中使用多游标 drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...

  8. 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较

    我的代码: package PlaneGame;/** * 选择排序法.冒泡排序法.插入排序法.系统提供的底层sort方法排序之毫秒级比较 * @author Administrator */impo ...

  9. k8s build new API

    apiserver-builder git hub api conventions storage api arch step by step,   we can follow it. api con ...

  10. 原来Github上的README.md文件这么有意思——Markdown语言详解(sublime text2 版本)

    一直想学习 Markdown 语言,想起以前读的一篇 赵凯强 的 博客 <原来Github上的README.md文件这么有意思——Markdown语言详解>,该篇博主 使用的是Mac系统, ...