我正在尝试使用 Autofac 了解委托工厂模式。我知道如何使用带有 Keyed() 注册的 IIndex<> 来实现工厂,这里很好地解释了这一点:Configuring an Autofac delegate factory that's defined on an abstract class
我想知道是否可以使用 Func<> 创建工厂,以及如何为以下示例进行注册:
public enum Service
{
Foo,
Bar
}
public interface FooService : IService
{
ServiceMethod();
}
public interface BarService : IService
{
ServiceMethod();
}
public class FooBarClient
{
private readonly IService service;
public FooBarClient(Func<Service, IService> service)
{
this.service = service(Service.Foo);
}
public void Process()
{
service.ServiceMethod(); // call the foo service.
}
}