C#中this用法系列(二) 通過this修飾符為原始類型擴展方法
定義一個靜態(tài)類,類中定義靜態(tài)方法,方法中參數(shù)類型前邊加上this修飾符,即可實現(xiàn)對參數(shù)類型的方法擴展
示例如
namespace Demo{
// 這里的類必須為靜態(tài)類
public static class Json
{
     // 方法為靜態(tài)方法    
// this修飾符后邊是string類型,即為string類型擴展出了ToJson方法
public static object ToJson(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject(Json);
}
     // this修飾符后邊類型為object,即為object類型擴展出了ToJson方法
public static string ToJson(this object obj)
{
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
return JsonConvert.SerializeObject(obj, timeConverter);
}
public static string ToJson(this object obj, string datetimeformats)
{
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };
return JsonConvert.SerializeObject(obj, timeConverter);
}
public static T ToObject<T>(this string Json)
{
return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);
}
public static List<T> ToList<T>(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);
}
public static DataTable ToTable(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json);
}
public static JObject ToJObject(this string Json)
{
return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", ""));
}
}
public class User {
public string ID { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(stringtry
{
List<User> users = new List<User>new User{ID="1",Code="zs",Name="張三"},
new User{ID="2",Code="ls",Name="李四"}
};
// List被擴展出了ToJson方法,用于轉(zhuǎn)化字符串
string json = users.ToJson();
// string類型被擴展出了ToJson方法,用于轉(zhuǎn)化對象
object obj = json.ToJson();
// string類型被擴展出了ToList方法,用于轉(zhuǎn)化List
users = json.ToList<User>();
          
          // string類型轉(zhuǎn)化DataTable
          DataTable dt=json.ToTable();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
Console.ReadLine();
}
}
}
}
以上所述是小編給大家介紹的C#中this用法系列(二) 通過this修飾符為原始類型擴展方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對我們網(wǎng)站的支持!
欄 目:C#教程
下一篇:詳解C# Socket簡單例子(服務器與客戶端通信)
本文標題:C#中this用法系列(二) 通過this修飾符為原始類型擴展方法
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/6142.html
您可能感興趣的文章
- 01-10C#通過反射獲取當前工程中所有窗體并打開的方法
 - 01-10C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法
 - 01-10C#實現(xiàn)由四周向中心縮小的窗體退出特效
 - 01-10Extjs4如何處理后臺json數(shù)據(jù)中日期和時間
 - 01-10C#中DataGridView常用操作實例小結(jié)
 - 01-10C#編程獲取資源文件中圖片的方法
 - 01-10asp.net中XML如何做增刪改查操作
 - 01-10C#線程隊列用法實例分析
 - 01-10C#利用反射技術實現(xiàn)去掉按鈕選中時的邊框效果
 - 01-10C#中查找Dictionary中的重復值的方法
 


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
 - 01-10關于ASP網(wǎng)頁無法打開的解決方案
 - 01-10WinForm限制窗體不能移到屏幕外的方法
 - 01-10WinForm繪制圓角的方法
 - 01-10C#實現(xiàn)txt定位指定行完整實例
 - 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
 - 01-10C#停止線程的方法
 - 01-10C#實現(xiàn)清空回收站的方法
 - 01-10C#通過重寫Panel改變邊框顏色與寬度的
 - 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
 
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
 - 01-10delphi制作wav文件的方法
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-10C#中split用法實例總結(jié)
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 04-02jquery與jsp,用jquery
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 01-11ajax實現(xiàn)頁面的局部加載
 


