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. .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法

    .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法 1.最简单的方法是修改后缀名为.zip然后解压,解压后就可以看到一张图片,这个就是文档内容了. 2.更 ...

  2. node.js核心技术

    一.知识结构: http模块:配置简单 的web服务,npm/cnpm工具 express框架:express中间件进行服务配置:路由:请求处理: DB服务:学习使用mysql关系型数据库: web接 ...

  3. python的类和对象

    一.面向对象和面向过程 1.1面向过程的特点 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 1.2面 ...

  4. self asyncio

    import asyncio from threading import Thread import time print('main start:',time.time()) async def d ...

  5. Mac配置java运行环境的步骤

    官网下载地址:jdk1.8版本的  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  6. TCP/IP 最常见的错误原因码 (errno)列表

    对于在基于 UNIX 的环境中的 TCP/IP 用户,下表列出了某些最常见的错误原因码 (errno).它不是完整的错误列表.可以在文件 /usr/include/sys/errno.h 中找到 Er ...

  7. div容器中内容垂直居中

    #box{ width:200px; height:200px; line-height: 200px; vertical-align: middle; margin: 5px; background ...

  8. Guitar Pro怎样可以快速打出三连音?

    相信很多的音乐爱好初学者在使用入门编曲软件Guitar Pro的时候,都会碰到这样一个问题,很多乐谱中都出现了三连音,那么我们使用Guitar Pro的时候,如何能够打出三连音呢? 三连音,就是三等分 ...

  9. Hacker

    https://hackertarget.com/nikto-website-scanner/

  10. topcoder srm 709 div1

    1 给定一个长度为n的整数数组A,重排列数组A使得下面计算出的X最大:(n不大于15,A中的大于等于0小于等于50) int X=0; for(int i=0;i<n;++i) X=X+(X^A ...