将返回特定实现T的方法分配给Func
示例代码:
public interface IFoo
{
void Foo();
}
public class Foo1 : IFoo
{
public void Foo()
{
Console.WriteLine("Foo1 Foo");
}
}
public class Foo2 : IFoo
{
public void Foo()
{
Console.WriteLine("Foo2 Foo");
}
}
public static class FooFactory
{
public static IFoo GetFoo1()
{
return new Foo1();
}
public static IFoo GetFoo2()
{
return new Foo2();
}
}
public static void Main(string[] args)
{
Func createFoo = FooFactory.GetFoo1;
IFoo foo = createFoo();
foo.Foo(); // 输出 "Foo1 Foo"
createFoo = FooFactory.GetFoo2;
foo = createFoo();
foo.Foo(); // 输出 "Foo2 Foo"
}