C#中返回值封装

在平时开发过程中常常需要取一个方法的返回值,BOSS写了一个返回值类,做个练习以备不时之需:

返回值支持泛型和非泛型 先贴上代码:

非泛型返回值类:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Runtime.Serialization;
 6
 7
 8 namespace WindowsFormsApplication31
 9 {
10     [Serializable]
11
12     public class ReturnValue
13     {
14         /// <summary>
15         /// 状态:成功、失败
16         /// </summary>
17
18         public bool State
19         {
20             get;
21             protected set;
22         }
23
24         /// <summary>
25         /// 成功消息
26         /// </summary>
27
28         public string SuccessMessage
29         {
30             get;
31             protected set;
32         }
33
34         /// <summary>
35         /// 失败消息
36         /// </summary>
37
38         public string FailMessage
39         {
40             get;
41             protected set;
42         }
43
44
45         /// <summary>
46         /// 构造器
47         /// </summary>
48         public ReturnValue()
49         {
50             this.State = false;
51             this.SuccessMessage = string.Empty;
52             this.FailMessage = string.Empty;
53         }
54
55         /// <summary>
56         /// 设置状态
57         /// </summary>
58         /// <param name="state">状态</param>
59         /// <param name="message">消息</param>
60         private void Load(bool state, string message = "")
61         {
62             this.State = state;
63             if (state)
64             {
65                 this.SuccessMessage = message;
66             }
67             else
68             {
69                 this.FailMessage = message;
70             }
71         }
72
73         /// <summary>
74         /// 设置成功
75         /// </summary>
76         /// <param name="message">成功消息</param>
77         public void Success(string message = "")
78         {
79             this.Load(true, message);
80         }
81
82         /// <summary>
83         /// 设置失败
84         /// </summary>
85         /// <param name="message">失败消息</param>
86         public void Fail(string message = "")
87         {
88             this.Load(false, message);
89         }
90     }
91 }

泛型返回值类:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Runtime.InteropServices;
 6 using System.Runtime.Serialization;
 7
 8
 9
10
11 namespace WindowsFormsApplication31
12 {
13     [Serializable]
14
15     public class ReturnValues<T> : ReturnValue
16     {
17         /// <summary>
18         /// 返回值
19         /// </summary>
20
21         public T Value
22         {
23             get;
24             set;
25         }
26
27         /// <summary>
28         /// 设置成功
29         /// </summary>
30         /// <param name="value">值</param>
31         /// <param name="message">成功消息</param>
32         public void Success(T value = default(T), string message = "")
33         {
34             this.State = true;
35             this.Value = value;
36             this.SuccessMessage = message;
37         }
38     }
39 }

实例:

1.演示窗体:

通过2个文本框输入信息

第一个开始返回文本验证信息

第二个开始按钮测试

2.关键代码:

非泛型:

    #region 返回值(非泛型)
        /// <summary>
        /// 按钮1
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnVerifyEmpty_Click(object sender, EventArgs e)
        {
            ReturnValue rv = VerifyEmpty();
            this.ReturnValueHelper(rv);
        }

        /// <summary>
        /// 按钮1 测试
        /// </summary>
        /// <returns></returns>
        private ReturnValue VerifyEmpty()
        {
            ReturnValue rv = new ReturnValue();
            if (string.IsNullOrEmpty(this.textBox1.Text.Trim()))
            {
                rv.Fail("值为空");
            }
            else
            {
                rv.Success("值非空");
            }
            return rv;
        }

        /// <summary>
        /// 返回值输出
        /// </summary>
        /// <param name="rv"></param>
        private void ReturnValueHelper(ReturnValue rv)
        {
            bool state = rv.State;
            StringBuilder sb = new StringBuilder();
            if (state)
            {
                sb.AppendLine("返回值状态是:True");
                sb.AppendLine("成功消息:" + rv.SuccessMessage);

            }
            else
            {
                sb.AppendLine("返回值状态是:False");
                sb.AppendLine("失败消息:" + rv.FailMessage);
            }
            MessageBox.Show(sb.ToString());
        }
        #endregion  

泛型:

        #region 返回值(泛型)
        private void btnQueryStudent_Click(object sender, EventArgs e)
        {
            //获取姓名
            string studentName = this.textBox2.Text.Trim();
            //获取返回值
            ReturnValues<int> rv = this.GetReturnValues(studentName);
            //输出
            this.ReturnValuesHelper(rv);

        }

        /// <summary>
        /// 获取返回值
        /// </summary>
        /// <param name="rv"></param>
        private ReturnValues<int> GetReturnValues(string name)
        {
            //实例化返回类
            ReturnValues<int> rv = new ReturnValues<int>();

            //构造测试数据,模拟实际开发的取数据操作
            Dictionary<string, int> dic = new Dictionary<string, int>();
            dic.Add("A", 1);
            dic.Add("B", 2);
            dic.Add("C", 3);
            dic.Add("D", 4);
            dic.Add("E", 5);

            //开始判断
            if (dic.Keys.Contains(name))
            {
                rv.Success("数据查找成功");
                rv.Value = dic[name];
            }
            else
            {
                rv.Fail("数据查找失败");
            }
            return rv;
        }
        /// <summary>
        /// 返回值输出
        /// </summary>
        /// <param name="rv"></param>
        private void ReturnValuesHelper(ReturnValues<int> rv)
        {
            bool state = rv.State;
            StringBuilder sb = new StringBuilder();
            if (state)
            {
                sb.AppendLine("返回值状态是:True");
                sb.AppendLine("成功消息:" + rv.SuccessMessage);
                sb.AppendLine("泛型值:" + rv.Value.ToString());

            }
            else
            {
                sb.AppendLine("返回值状态是:False");
                sb.AppendLine("失败消息:" + rv.FailMessage);
            }
            MessageBox.Show(sb.ToString());
        }

        #endregion
    }

3.开始演示:

 //第二个文本只能输入A B C D E才提示成功并且可以得到对应的返回值
            Dictionary<string, int> dic = new Dictionary<string, int>();
            dic.Add("A", 1);
            dic.Add("B", 2);
            dic.Add("C", 3);
            dic.Add("D", 4);
            dic.Add("E", 5);

时间: 2024-10-05 13:10:00

C#中返回值封装的相关文章

在Java 线程中返回值的用法

http://icgemu.iteye.com/blog/467848 在Java 线程中返回值的用法 博客分类: Java Javathread 有时在执行线程中需要在线程中返回一个值:常规中我们会用Runnable接口和Thread类设置一个变量:在run()中改变变量的值,再用一个get方法取得该值,但是run何时完成是未知的:我们需要一定的机制来保证. 在在Java se5有个Callable接口:我们可以用该接口来完成该功能: 代码如: Java代码   package com.thr

通用返回值封装

在很多时候我们返回值使用json会更方便一点,下面我把我常用到的返回值封装代码贴出来. public class ApiJsonResult<T> { public T Data { get; set; } public ApiJsonError Error { get; set; } public int Total { get; set; } public ApiJsonResult(T data, ApiJsonError error = null) { this.Data = data

C++中返回值

函数的返回值用于初始化在调用函数是创建的临时对象. 1.返回值为非引用类型: 会将函数的返回值复制给临时对象.跟实参初始化形参的方式一样. 2.返回值为引用类型: 没有复制返回值,返回的是对象本身.返回引用时,在函数的参数中要有以引用方式或指针方式传入的要返回的参数 不能返回局部对象的引用.(因为函数执行结束,将释放分配给局部对象的存储空间,对局部对象的引用就会指向不确定的内存) int& abc(int a, int b, int c, int& result){ result = a

java中返回值和参数理解

1.什么是对象,为什么需要对象? 对象是类的一个实例(对象不是找个女朋友),有状态和行为.万物皆对象! 2.什么是函数,为什么需要函数? 习惯把函数也叫成方法,都是一个意思:函数是具备特定功能的一段代码块,解决了重复性代码的问题.目的是为了提高程序的复用性和可读性. 3.什么是函数的返回值,什么是函数的参数? 函数返回值就是你所调用的函数返回给你的值.形参:用来接收调用该方法时传递的参数.只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间.因此仅仅在方法内有效.实参:传递给被调用方法

mybatis &lt;sql /&gt; 配置中 返回值 resultType 与resultMap的区别

mybatis的objectMapper.xml中, 1) 若<sql /> 查询语句中配置的是resultType=“实体类/DTO” ,则从mybatis返回的键值对结果集(Map)会直接赋值给该DTO(根据set()/get()方法,因此该DTO属性名要与表字段名一致,若不一致,可再sql查询语句中用as 更换查出来表字段名)中相映射的属性值,而与该mappper.xml文件配置<mapper/>里的<resultMap />无关. 2)若<sql />

springboot中返回值json中null转换空字符串

在实际项目中,我们难免会遇到一些无值.当我们转JSON时,不希望这些null出现,比如我们期望所有的null在转JSON时都变成“”“”这种空字符串,那怎么做呢? Jackson中对null的处理 1 @Configuration 2 public class JacksonConfig { 3 @Bean 4 @Primary 5 @ConditionalOnMissingBean(ObjectMapper.class) 6 public ObjectMapper jacksonObjectM

C#秘密武器之多线程——参数与返回值

概述 线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一.添加外壳方法 原理:把参数传递变成了对变量的调用 方法:定义一个专门的线程类. 1.需要向线程传递的参数和返回值作为类的公共属性: 2.线程函数的真正方法也放在该类里边 3.加壳的线程函数也放在里边(真正调用的是2的方法) public class MyThread { public dou

用ajaxFileUpLoad上传文件不能正确取得返回值的问题

刚开始没有觉得ajax请求的dataType参数的重要性,用了ajaxFileUpLoad插件后,如果页面代码如下: fileElementId : ['imageToUpload'], url : 'url', dataType : 'json', 返回类型为json数据,那么后台处理上传后,必须将返回值封装成json格式的数据返回给前台页面. 后台封装如下: return "{\"result\":" + "\"OK\"}"

JSF页面中使用js函数回调后台bean方法并获取返回值的方法

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的,很可能会误导使用者. 相对来说,看国内的那些仅仅是翻译过来的文章或书籍不如直接看国外的官方文档或资料来的实在,在我讲述jsf页面中如何使用js调用后台bean方法之前,先给大家说几个国外的资料.在primefaces官方网站上,你可以搜索到几乎所有你需要的东西,primefaces官网为:http: