ASP.NET MVC學(xué)前篇之?dāng)U展方法、鏈?zhǔn)骄幊?/p>創(chuàng)新互聯(lián)公司是一家專業(yè)提供黃梅企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為黃梅眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
目的沒(méi)有別的,就是介紹幾點(diǎn)在ASP.NETMVC 用到C#語(yǔ)言特性,還有一些其他瑣碎的知識(shí)點(diǎn),強(qiáng)行的劃分一個(gè)范圍的話,只能說(shuō)都跟MVC有關(guān),有的是外圍的知識(shí),有的是包含在框架內(nèi)的。 MVC學(xué)前篇字樣?有噱頭的成分也有真實(shí)的成分,所以工欲善其事,必先利其器。器是什么?基礎(chǔ)嘛,雖然說(shuō)MVC框架中涉及到的知識(shí)很多很多也不是我一篇兩篇能說(shuō)完的,我能做的就是知道多少就跟大家分享多少,當(dāng)然了隨著時(shí)間的推移會(huì)完善這個(gè)系列。
擴(kuò)展方法是C# 3.0特性里的知識(shí),它用在最多的地方是在Linq中,把眾多的查詢功能添加到了IEnumerable和IEnumerable
運(yùn)用的實(shí)際場(chǎng)景:有個(gè)購(gòu)物清單(購(gòu)物車)對(duì)象,它包含有添加、***清單內(nèi)物品的功能
商品對(duì)象,它包含 商品名稱、商品價(jià)格兩個(gè)屬性
代碼1-1
1 namespace BlogCase 2 public class Commodity 3 { 4 public string Name { get; set; } 5 public float Price { get; set; } 6 } 7 8 namespace BlogCase 9 ///10 /// 購(gòu)物清單 11 /// 12 public class ShoppingList 13 { 14 private List_Commodities; 15 16 public List Commodities 17 { 18 get { return _Commodities; } 19 } 20 21 public ShoppingList() 22 { 23 _Commodities = new List (); 24 } 25 26 public bool AddCommodity(Commodity commodity) 27 { 28 _Commodities.Add(commodity); 29 return true; 30 } 31 32 public bool RemoveCommodity(Commodity commodity) 33 { 34 if (_Commodities.Contains(commodity)) 35 { 36 _Commodities.Remove(commodity); 37 return true; 38 } 39 else 40 { 41 return false; 42 } 43 } 44 }
然后在這個(gè)令人不安、惶恐、期待、興奮的新需求來(lái)了,要求清單可以提供一個(gè)清單內(nèi)部所有貨品價(jià)格的合計(jì)而又不破壞對(duì)象結(jié)構(gòu).
對(duì)的。這是非常合理的需求,現(xiàn)在咒罵也于事無(wú)補(bǔ),因?yàn)樾枨罂偸俏粗摹T诮辜?、無(wú)奈中曙光就降臨了,它就是C# 3.0中的特性擴(kuò)展方法。
來(lái)看代碼1-2
代碼1-2
1 using BlogCase; 2 using System.Linq; 3 4 namespace BlogCase.Extension 5 { 6 public static class ShoppingListExtension 7 { 8 public static float Total(this ShoppingList shoppintlist) 9 { 10 return shoppintlist.Commodities.Sum(commodity => commodity.Price); 11 } 12 } 13 }
這里要說(shuō)的是ShoppingListExtension類型是一個(gè)靜態(tài)類,里面定義了一個(gè)靜態(tài)方法Total,方法的簽名是ShoppingList類型的參數(shù),唯一不同的是在ShoppingList類型前面多了個(gè)this關(guān)鍵字,這時(shí)對(duì)ShoppingList類型的擴(kuò)展方法已經(jīng)定義好了。來(lái)看下示例代碼1-3的使用吧。
代碼1-3
1 using BlogCase.Extension; 2 3 namespace BlogCase 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 ShoppingList shoppinglistTest = new ShoppingList(); 10 shoppinglistTest.AddCommodity(new Commodity() { Name = "A", Price = 14.3f }); 11 shoppinglistTest.AddCommodity(new Commodity() { Name = "B", Price = 15 }); 12 shoppinglistTest.AddCommodity(new Commodity() { Name = "C", Price = 27.9f }); 13 shoppinglistTest.AddCommodity(new Commodity() { Name = "D", Price = 34.3f }); 14 Console.WriteLine(shoppinglistTest.Total().ToString()); 15 Console.ReadLine(); 16 } 17 } 18 }
這里需要注意的是需要引用擴(kuò)展方法類ShoppingListExtension所在的命名空間,在VS開發(fā)環(huán)境中,擴(kuò)展方法的圖標(biāo)也和普通方法的不一樣。如圖1
圖1
commodity.Price>58).Total().ToString()); 15 Console.ReadLine(); 16 } 17 } 18 }
運(yùn)行結(jié)果如圖3
圖3
高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。