如何在Autofac中注册其构造函数采用Func参数的类型

时间:2018-08-29 16:38:33

标签: c# dependency-injection autofac

我有一个带有构造函数的类,该构造函数接受我需要在Autofac中注册的Func参数。

这是定义类的方式:

public class MyClass : IMyClass
{
  private Func<Task<IProvider<string, object>>> _provider;

  public MyClass(Func<Task<IProvider<string, object>>> provider)
  {
    _provider = provider;
  }

  ...
}

我如何在Autofac上注册该课程?

我尝试了以下操作:

builder.RegisterType<MyClass>()
  .As<IMyClass>()
  .InstancePerLifetimeScope()
  .WithParameter("provider", MyProviderFunc);

但这会导致以下编译错误:

cannot convert from 'method group' to 'object'

这是MyProviderFunc的定义:

private static Task<ICRUDProvider<string, object>> MyProviderFunc()
{
  ...
}

1 个答案:

答案 0 :(得分:1)

您需要将方法组显式转换为委托类型(否则,编译器不知道您想要哪个委托):

.WithParameter("provider", new Func<Task<IProvider<string, object>>>(MyProviderFunc));