C#實(shí)現(xiàn)類(lèi)似jQuery的方法連綴功能
jQuery的方法連綴使用起來(lái)非常方便,可以簡(jiǎn)化語(yǔ)句,讓代碼變得清晰簡(jiǎn)潔。那C#的類(lèi)方法能不能也實(shí)現(xiàn)類(lèi)似的功能呢?基于這樣的疑惑,研究了一下jQuery的源代碼,發(fā)現(xiàn)就是需要方法連綴的函數(shù)方法最后返回對(duì)象本身即可。既然javascript可以,C#應(yīng)該也是可以的。
為了驗(yàn)證,編寫(xiě)一個(gè)jQPerson類(lèi),然后用方法連綴對(duì)其ID,Name,Age等屬性進(jìn)行設(shè)置,請(qǐng)看下面的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpMethodLikeJQuery
{
public class jQPerson
{
string Id { set; get; }
string Name { set; get; }
int Age { set; get; }
string Sex { set; get; }
string Info { set; get; }
public jQPerson()
{
}
/// <summary>
/// 設(shè)置ID,返回this,即jQPerson實(shí)例
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public jQPerson setId(string Id)
{
this.Id = Id;
return this;
}
/// <summary>
/// 返回this,即jQPerson實(shí)例
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public jQPerson setName(string name)
{
this.Name = name;
return this;
}
/// <summary>
/// 返回this,即jQPerson實(shí)例
/// </summary>
/// <param name="age"></param>
/// <returns></returns>
public jQPerson setAge(int age)
{
this.Age = age;
return this;
}
/// <summary>
/// 返回this,即jQPerson實(shí)例
/// </summary>
/// <param name="sex"></param>
/// <returns></returns>
public jQPerson setSex(string sex)
{
this.Sex = sex;
return this;
}
/// <summary>
/// 返回this,即jQPerson實(shí)例
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public jQPerson setInfo(string info)
{
this.Info = info;
return this;
}
/// <summary>
/// tostring輸出鍵值對(duì)信息
/// </summary>
/// <returns></returns>
public string toString()
{
return string.Format("Id:{0},Name:{1},Age:{2},Sex:{3},Info:{4}", this.Id, this.Name, this.Age, this.Sex, this.Info);
}
}
}
然后可以對(duì)上面進(jìn)行測(cè)試,看方法連綴是否生效:
/// <summary>
///toString 的測(cè)試
///</summary>
[TestMethod()]
public void toStringTest()
{
jQPerson target = new jQPerson();
target.setId("2")
.setName("jack")
.setAge(26)
.setSex("man")
.setInfo("ok");
string expected = "Id:2,Name:jack,Age:26,Sex:man,Info:ok";
string actual;
actual = target.toString();
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("驗(yàn)證此測(cè)試方法的正確性。");
}
通過(guò)以上操作可以看出,方法連綴功能的確使代碼變得直觀和簡(jiǎn)潔,增加可閱讀性,大家不妨試一試。
相關(guān)文章
關(guān)于C# TabPage如何隱藏的問(wèn)題
TabPage沒(méi)有Visible屬性,所以只能通過(guò)設(shè)置將其與父控件(tabcontrol)的關(guān)聯(lián)性去除就好了,如下面代碼:2013-04-04
C# 實(shí)現(xiàn)顏色漸變窗體控件詳細(xì)講解
這篇文章主要介紹了C# 實(shí)現(xiàn)顏色漸變窗體控件詳細(xì)講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
詳解C# parallel中并行計(jì)算的四種寫(xiě)法總結(jié)
在C#中,parallel關(guān)鍵字可以用于并行計(jì)算。本文為大家總結(jié)了四種C# parallel并行計(jì)算的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11
SuperSocket入門(mén)--Telnet服務(wù)器和客戶(hù)端請(qǐng)求處理
本文的控制臺(tái)項(xiàng)目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。下面跟著小編一起來(lái)看下吧2017-01-01
C# 字符串string和內(nèi)存流MemoryStream及比特?cái)?shù)組byte[]之間相互轉(zhuǎn)換
本文主要介紹字符串string和內(nèi)存流MemoryStream及比特?cái)?shù)組byte[]之間相互轉(zhuǎn)換的方法,需要的小伙伴可以參考一下。2016-05-05
C#自定義DataGridViewColumn顯示TreeView
我們可以自定義DataGridView的DataGridViewColumn來(lái)實(shí)現(xiàn)自定義的列,下面介紹一下如何通過(guò)擴(kuò)展DataGridViewColumn來(lái)實(shí)現(xiàn)一個(gè)TreeViewColumn2015-12-12
C#中比較兩個(gè)List是否相等的常見(jiàn)方法
在?C#?里,比較兩個(gè)?List?是否相等,需要考慮多個(gè)方面,例如列表中的元素順序、元素本身是否相等,下面介紹幾種常見(jiàn)的比較方法,需要的朋友可以參考下2025-04-04
.NET(C#):Emit創(chuàng)建異常處理的方法
.NET(C#):Emit創(chuàng)建異常處理的方法,需要的朋友可以參考一下2013-04-04

