2. Extension method

public class Product
{
    public int ProductID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string Category { set; get; }
}
using System.Collections.Generic;
public class ShoppingCart
{
    public List<Product> Products { get; set; }
}
public static class MyExtensionMethods
{
    public static decimal TotalPrices(this ShoppingCart cartParam)
    {
        decimal total = 0;
        foreach (Product prod in cartParam.Products)
        {
            total += prod.Price;
        }
        return total;
    }
}
using System;
using System.Collections.Generic;
class Program
{
    static void Main(string[] args)
    {
        // create and populate ShoppingCart
        ShoppingCart cart = new ShoppingCart
        {
            Products = new List<Product> {
            new Product {Name = "Kayak", Price = 275M},
            new Product {Name = "Lifejacket", Price = 48.95M},
            new Product {Name = "Soccer ball", Price = 19.50M},
            new Product {Name = "Corner flag", Price = 34.95M}
            }
        };
        // get the total value of the products in the cart
        decimal cartTotal = cart.TotalPrices();
        Console.WriteLine("Total: {0:c}", cartTotal);
    }
}
Here is mainly an extension method TotalPrices, which is to

ShoppingCart this class adds a static method TotalPrices


Application of interface extension method

using System.Collections;
using System.Collections.Generic;
public class ShoppingCart : IEnumerable<Product>
{
    public List<Product> Products { get; set; }
    public IEnumerator<Product> GetEnumerator()
    {
        return Products.GetEnumerator();
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
using System.Collections.Generic;
public static class MyExtensionMethods
{
    public static decimal TotalPrices(this IEnumerable<Product> productEnum)
    {
        decimal total = 0;
        foreach (Product prod in productEnum)
        {
            total += prod.Price;
        }
        return total;
    }
}
using System;
using System.Collections.Generic;
class Program
{
    static void Main(string[] args)
    {
        // create and populate ShoppingCart
        IEnumerable<Product> products = new ShoppingCart
        {
            Products = new List<Product> {
            new Product {Name = "Kayak", Price = 275M},
            new Product {Name = "Lifejacket", Price = 48.95M},
            new Product {Name = "Soccer ball", Price = 19.50M},
            new Product {Name = "Corner flag", Price = 34.95M}}
        };
        // create and populate an array of Product objects
        Product[] productArray = {
            new Product {Name = "Kayak", Price = 275M},
            new Product {Name = "Lifejacket", Price = 48.95M},
            new Product {Name = "Soccer ball", Price = 19.50M},
            new Product {Name = "Corner flag", Price = 34.95M}
        };
        // get the total value of the products in the cart
        decimal cartTotal = products.TotalPrices();
        decimal arrayTotal = products.TotalPrices();
        Console.WriteLine("Cart Total: {0:c}", cartTotal);
        Console.WriteLine("Array Total: {0:c}", arrayTotal);
    }
}


Guess you like

Origin blog.csdn.net/xiongxyt2/article/details/8045821