Как зарегистрировать тип, конструктор которого принимает параметр Func в Autofac - PullRequest
0 голосов
/ 29 августа 2018

У меня есть класс с конструктором, который принимает параметр Func, который мне нужно зарегистрировать в Autofac.

Вот как определяется класс:

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 голосов
/ 29 августа 2018

Вам необходимо явно преобразовать группу методов в тип делегата (в противном случае компилятор не знает, какой делегат вам нужен):

.WithParameter("provider", new Func<Task<IProvider<string, object>>>(MyProviderFunc));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...