加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET Core中的Func类型的依赖注入

发布时间:2020-12-16 01:26:13 所属栏目:百科 来源:网络整理
导读:我正在尝试使用asp.net core 2.0.1为我的DataContext将一个Func注入一个webapi控制器. 在我的Startup.cs中我添加了; services.AddTransientFuncIDataContext,FuncDataContext(); 然后我在我的控制器构造函数中将此传递给我的服务; private readonly ClientSe
我正在尝试使用asp.net core 2.0.1为我的DataContext将一个Func注入一个webapi控制器.

在我的Startup.cs中我添加了;

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

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

private readonly ClientService _service;

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

但是,当我运行程序并尝试调用端点时,我收到错误;

InvalidOperationException: Unable to resolve service for type ‘System.Object’ while attempting to activate ‘System.Func`1[Data.EF.DataContext]’.

为什么这样好?以及如何解决它.

解决方法

你是说Func< IDataContext>应该解析为Func< DataContext>,但是DI容器不知道如何构造Func< DataContext>,所以你需要明确告诉它:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读