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. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  2. 以太坊ETH中智能合约消耗的Gas、Gas Limit是什么?

    以太坊ETH中智能合约消耗的Gas.Gas Limit是什么? 数字货币交易一般是有交易费的,比特币(BTC)的交易费很容易理解,就是直接支付一定额度的BTC作为手续费.而以太坊(ETH)的交易费表面 ...

  3. 常见的原生javascript DOM操作

    1.创建元素 创建元素:document.createElement() 使用document.createElement()可以创建新元素.这个方法只接受一个参数,即要创建元素的标签名.这个标签名在 ...

  4. JXNU暑期选拔赛

    最小的数 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submissi ...

  5. 在CentOS 6.X中安装中文字体

    1.从Windows中 拷贝或者网络上下载你想要安装的字体文件(*.ttf文件) 2.新建字体目录 #mkdir /usr/share/fonts/ 3.修改字体文件的权限,使root用户以外的用户也 ...

  6. memcache,redis对比

    一.问题:     数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求.   二.解决方案:      1.通过高速服务器Cache缓存数据库数据      2.内存数据库     ( ...

  7. 自写Jquery插件 Combobox

    原创文章,转载请注明出处,https://www.cnblogs.com/GaoAnLee/p/9092421.html 上效果 html <span id='combobox' class=' ...

  8. 76 道 Oracle Goldengate 面试问题

    基础 12c新特性 性能 Troubleshoot 其它 1. Oracle Goldengate 支持部署到哪些拓扑? GoldenGate supports the following topol ...

  9. maven编译项目报错,提示找不到符号或程序包XXX不存在

    我的原因是maven依赖的jar包都下载了,但是引用的同一个项目下其他模块jar包找不到 解决方法: 把需要的jar包在pom里添加依赖 再次运行项目,Maven Dependencies下就会多了几 ...

  10. window apidoc的安装和使用

    apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用者仅需要按照要求书写相关注释,就可以生成可读性好.界面美观的在线接 ...