簡體   English   中英

如何在Autofac中注冊其構造函數采用Func參數的類型

[英]How to register a type whose constructor takes a Func parameter in 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()
{
  ...
}

您需要將方法組顯式轉換為委托類型(否則,編譯器不知道您想要哪個委托):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM