MVC 중 사용 확장 방법

확장 방법 (Extension Method) 준 그 니가 가진, 그래서 직접적인 수정 클래스 추가 방법 일종의 편리한 방법.

한 · 사용 확장 방법

1, 정의 한 쇼핑 차의 종류 -ShoppingCart

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Web;
 6 
 7 namespace Demo.Models
 8 {
 9     public class ShoppingCart:IEnumerable<Product>
10     {
11         public List<Product> Products { get; set; }16     }
17 }

2, 정의 한 확장 방법

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace Demo.Models
 7 {
 8     public static class MyExtensionMethods
 9     {
10         public static decimal TotalPrices(this ShoppingCart cartParam)
11         {
12             decimal total = 0;
13             foreach (Product prod in cartParam.Products)
14             {
15                 total += prod.Price;
16             }
17             return total;
18         }28     }
29 }

this 키워드 그 TotalPrices 정의 한 확장 ShoppingCart 위해 방법을 알려.net 이 확장 방법 운용 및 그 클래스

3, 운용 확장 방법


 1 public ViewResult UserExtension()
 2         {
 3             //생성 및 충전 ShoppingCart
 4             ShoppingCart cart = new ShoppingCart
 5             {
 6                 Products = new List<Product>{
 7                 new Product{Name="kayak",Price=275M},//카누
 8                 new Product{Name="Lifejacket",Price=48.95M},//캐주얼 재킷
 9                 new Product{Name="Soccer ball",Price=19.50M},//축구
10                 new Product{Name="Corner flag",Price=34.95M}//코너 플랙
11                 }
12             };
13             //제발, 쇼핑, 차 중 제품 총가격 가서
14             decimal cartTotal = cart.TotalPrices();
15             return View("Result", (object)String.Format("Total:{0:c}", cartTotal));
16         }

4, 결국 전시

둘째, 대한 확장 인터페이스 활용 방법

1, 지금 ShoppingCart 클래스 중 실현 인터페이스

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Web;
 6 
 7 namespace Demo.Models
 8 {
 9     public class ShoppingCart:IEnumerable<Product>
10     {
11         public List<Product> Products { get; set; }
12         public IEnumerator<Product> GetEnumerator()
13         {
14             return Products.GetEnumerator();
15         }
16         IEnumerator IEnumerable.GetEnumerator()
17         {
18             return GetEnumerator();
19         }
20     }
21 }

2, 지금 인터페이스 에서 사업 확장 방법

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace Demo.Models
 7 {
 8     public static class MyExtensionMethods
 9     {10         public static decimal TotalPrices(this IEnumerable<Product> productEnum)
11         { 
12             decimal total=0;
13             foreach(Product prod in productEnum)
14             {
15                 total += prod.Price;
16             }
17             return total;
18         }
19     }
20 }

3, 은 확장 방법 운용해야 같은 인터페이스 다른 실현

 1  public ViewResult UseExtensionEnumerable()
 2         {
 3             IEnumerable<Product> products = new ShoppingCart
 4             {
 5                 Products = new List<Product>{
 6                     new Product{Name="kayak",Price=275M},//카누
 7                     new Product{Name="Lifejacket",Price=48.95M},//캐주얼 재킷
 8                     new Product{Name="Soccer ball",Price=19.50M},//축구
 9                     new Product{Name="Corner flag",Price=34.95M}//코너 플랙
10                 }
11             };
12             Product[] productArary ={
13                                    new Product{Name="kayak",Price=375M},//카누
14                     new Product{Name="Lifejacket",Price=48.95M},//캐주얼 재킷
15                     new Product{Name="Soccer ball",Price=19.50M},//축구
16                     new Product{Name="Corner flag",Price=34.95M}//코너 플랙
17                                    };
18             //장바구니 제품 총가격 가져오는 중
19             decimal cartTotal = products.TotalPrices();
20             //배열 중 제품 가져오는 총가격
21             decimal arrayTotal = productArary.TotalPrices();
22             return View("Result",(object)String.Format("Cart Total:{0},Array Total:{1}",cartTotal,arrayTotal));
23         }

4, 결국 전시

세, 필터 확장 생성 방법

1,

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace Demo.Models
 7 {
 8     public static class MyExtensionMethods
 9     {
10         public static IEnumerable<Product> FilterByCategory(this IEnumerable<Product> productEnum, string categoryParm)
11         {
12             foreach (Product prod in productEnum)
13             {
14                 if (prod.Category == categoryParm)
15                 {
16                     yield return prod;
17                 }
18             }
19         }
20     }
21 }

2, 필터 확장 사용 방법

 1 public ViewResult UseFilterExtensionMethod()
 2         {
 3             IEnumerable<Product> products = new ShoppingCart
 4             {
 5                 Products = new List<Product>{
 6                     new Product{Name="kayak",Category="Watersports",Price=375M},//카누
 7                     new Product{Name="Lifejacket",Category="Watersports",Price=48.95M},//캐주얼 재킷
 8                     new Product{Name="Soccer ball",Category="Soccer",Price=19.50M},//축구
 9                     new Product{Name="Corner flag",Category="Soccer",Price=34.95M}//코너 플랙
10                 }
11             };
12             decimal total = 0;
13             foreach (Product prod in products.FilterByCategory("Soccer"))
14             {
15                 total += prod.Price;
16             }
17             return View("Result",(object)String.Format("Total:{0}",total));
18         }

3, 결국 전시

단지 Soccer 분류 중 가격 의해 복귀 어큐뮬레이션 나와.

글쓴이 Kwan 작성일 2015-01-16 21:06