代码之家  ›  专栏  ›  技术社区  ›  Matthew Flynn

ASP中Func类型的依赖项注入。净核心

  •  9
  • Matthew Flynn  · 技术社区  · 7 年前

    我正在尝试使用asp将Func注入webapi控制器。net core 2.0.1 for my DataContext。

    在我的创业中。我添加了cs;

    services.AddTransient<Func<IDataContext>, Func<DataContext>>();
    

    然后,我在我的控制器构造函数中将其传递给我的服务;

    private readonly ClientService _service;
    
    public ClientController(Func<IDataContext> context)
    {
         _service = new ClientService(context);
    }
    

    然而,当我运行程序并尝试调用端点时,我得到了错误;

    InvalidOperationException:无法解析“System”类型的服务。对象“试图激活”系统。Func“1[数据.EF.DataContext]”。

    请问这是为什么?我该如何解决这个问题。

    1 回复  |  直到 7 年前
        1
  •  16
  •   Evk    7 年前

    你是这么说的 Func<IDataContext> 应解决为 Func<DataContext> ,但DI容器不知道如何构造 函数(&L);DataContext> ,因此您需要明确地告诉它:

    // this assumes IDataContext is already registered in container
    // if not - register it first
    services.AddTransient<Func<IDataContext>>(cont => () => cont.GetService<IDataContext>());