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

问题描述 投票:0回答:1

我有一个带有构造函数的类,它接受我需要向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()
{
  ...
}
c# dependency-injection autofac
1个回答
1
投票

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

.WithParameter("provider", new Func<Task<IProvider<string, object>>>(MyProviderFunc));
© www.soinside.com 2019 - 2024. All rights reserved.