C#中this用法系列(二) 通過this修飾符為原始類型擴(kuò)展方法
定義一個(gè)靜態(tài)類,類中定義靜態(tài)方法,方法中參數(shù)類型前邊加上this修飾符,即可實(shí)現(xiàn)對參數(shù)類型的方法擴(kuò)展
示例如
namespace Demo{
// 這里的類必須為靜態(tài)類
public static class Json
{
// 方法為靜態(tài)方法
// this修飾符后邊是string類型,即為string類型擴(kuò)展出了ToJson方法
public static object ToJson(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject(Json);
}
// this修飾符后邊類型為object,即為object類型擴(kuò)展出了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被擴(kuò)展出了ToJson方法,用于轉(zhuǎn)化字符串
string json = users.ToJson();
// string類型被擴(kuò)展出了ToJson方法,用于轉(zhuǎn)化對象
object obj = json.ToJson();
// string類型被擴(kuò)展出了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修飾符為原始類型擴(kuò)展方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
WPF利用TabControl控件實(shí)現(xiàn)拖拽排序功能
在UI交互中,拖拽操作是一種非常簡單友好的交互,這篇文章主要為大家介紹了WPF如何利用TabControl控件實(shí)現(xiàn)拖拽排序功能,需要的小伙伴可以參考一下2023-10-10
深入C#中使用SqlDbType.Xml類型參數(shù)的使用詳解
本篇文章是對在C#中使用SqlDbType.Xml類型參數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#實(shí)現(xiàn)寫入與讀出文本文件的實(shí)例代碼
本篇文章是對使用C#實(shí)現(xiàn)寫入與讀出文本文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#中利用斷點(diǎn)操作調(diào)試程序的步驟詳解
所謂斷點(diǎn)調(diào)試就是檢測執(zhí)行路徑和數(shù)據(jù)是否正確,中斷游戲運(yùn)行在線調(diào)試,下面這篇文章主要給大家介紹了關(guān)于C#中利用斷點(diǎn)操作調(diào)試程序的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12

