using System;
namespace 委托实例
{
class Program
{
static void Main(string[] args)
{
//需要生产工厂和包装工厂的实例
ProductFactory factory = new ProductFactory();
WrapFactory wrapfactory = new WrapFactory();
//创立两个生产委托
Func<Product> func1 = new Func<Product>(factory.MakePizza);
Func<Product> func2 = new Func<Product>(factory.MakeToyCar);
Box box1 = wrapfactory.WrapProduct(func1);//注意我下面函数传参是委托
Box box2 = wrapfactory.WrapProduct(func2);
Console.WriteLine(box1.product.Nmae);
Console.WriteLine(box2.product.Nmae);
}
}
/// <summary>
/// 定义产品
/// </summary>
class Product
{
public string Nmae { get; set; }
}
/// <summary>
/// 定义包装盒
/// </summary>
class Box
{
public Product product { get; set; }
}
/// <summary>
/// 定义打包工厂
/// </summary>
class WrapFactory
{
public Box WrapProduct(Func<Product> getProduct)//这个委托类型返回值是product
{
Box box = new Box();
Product product = getProduct.Invoke();
box.product = product;
return box;
}
}
/// <summary>
/// 定义产品生产工厂
/// </summary>
class ProductFactory
{
public Product MakePizza()
{
Product product = new Product();
product.Nmae = "Pizza";
return product;
}
public Product MakeToyCar()
{
Product product = new Product();
product.Nmae = " Toy Car";
return product;
}
}
}
刘铁猛C# 委托实例代码
最新推荐文章于 2024-05-31 16:33:16 发布