C#实现jQuery的方法连缀


   jQuery的方法连缀使用起来非常方便,可以简化语句,让代码变得清晰简洁。那C#的类方法能不能也实现类似的功能呢?基于这样的疑惑,研究了一下jQuery的源代码,发现就是需要方法连缀的函数方法最后返回对象本身即可。既然javascript可以,C#应该也是可以的。

  为了验证,编写一个jQPerson类,然后用方法连缀对其ID,Name,Age等属性进行设置,请看下面的代码:

 1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6 
 7 namespace CSharpMethodLikeJQuery  8 {  9     public class jQPerson 10  { 11         string Id { set; get; } 12         string Name { set; get; } 13         int Age { set; get; } 14         string Sex { set; get; } 15         string Info { set; get; } 16 
17         public jQPerson() 18  { 19 
20  } 21         /// <summary>
22         /// 设置ID,返回this,即jQPerson实例 23         /// </summary>
24         /// <param name="Id"></param>
25         /// <returns></returns>
26         public jQPerson setId(string Id) 27  { 28             this.Id = Id; 29             return this; 30  } 31         /// <summary>
32         /// 返回this,即jQPerson实例 33         /// </summary>
34         /// <param name="name"></param>
35         /// <returns></returns>
36         public jQPerson setName(string name) 37  { 38 
39             this.Name = name; 40             return this; 41  } 42         /// <summary>
43         /// 返回this,即jQPerson实例 44         /// </summary>
45         /// <param name="age"></param>
46         /// <returns></returns>
47         public jQPerson setAge(int age) 48  { 49 
50             this.Age = age; 51             return this; 52  } 53         /// <summary>
54         /// 返回this,即jQPerson实例 55         /// </summary>
56         /// <param name="sex"></param>
57         /// <returns></returns>
58         public jQPerson setSex(string sex) 59  { 60 
61             this.Sex = sex; 62             return this; 63  } 64         /// <summary>
65         /// 返回this,即jQPerson实例 66         /// </summary>
67         /// <param name="info"></param>
68         /// <returns></returns>
69         public jQPerson setInfo(string info) 70  { 71 
72             this.Info = info; 73             return this; 74  } 75         /// <summary>
76         /// tostring输出键值对信息 77         /// </summary>
78         /// <returns></returns>
79         public string toString() 80  { 81 
82             return string.Format("Id:{0},Name:{1},Age:{2},Sex:{3},Info:{4}", this.Id, this.Name, this.Age, this.Sex, this.Info); 83 
84 
85  } 86 
87  } 88 }

  然后可以对上面进行测试,看方法连缀是否生效:

 1         /// <summary>
 2         ///toString 的测试  3         ///</summary>
 4  [TestMethod()]  5         public void toStringTest()  6  {  7             jQPerson target = new jQPerson();  8             target.setId("2")  9                   .setName("jack") 10                   .setAge(26) 11                   .setSex("man") 12                   .setInfo("ok"); 13             string expected = "Id:2,Name:jack,Age:26,Sex:man,Info:ok"; 14             string actual; 15             actual = target.toString(); 16  Assert.AreEqual(expected, actual); 17             //Assert.Inconclusive("验证此测试方法的正确性。");
18         }

  可以看到,方法连缀确实可以让代码变得直观和简洁,增加可阅读性。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM