C# Webapi 简单的依赖注入-构造函数
控制器部分:
using Microsoft.AspNetCore.Mvc;
using WebApplication1.IServices;
using WebApplication1.Utility.SwaggerExt; namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
// 指定当前的控制器是哪个Swagger版本的 指定给 后台_version02
[ApiExplorerSettings(IgnoreApi = false, GroupName = nameof(ApiVersions.endApi))]
public class LoginController : ControllerBase
{
private readonly Calc calc;
public LoginController(Calc calc)
{
this.calc = calc;
}
[HttpGet]
public int TestAdd(int i , int j)
{
return calc.Add(i, j);
}
}
}
服务部分:通过构造函数注入服务
namespace WebApplication1
{
public class Calc
{
public int Add(int i,int j)
{
return i + j;
}
}
}
当有两个服务的时候,其中一个服务消耗较长的时间,那么另外一个服务即使没有使用到时间长的服务,但是速度依旧很慢 ;
eg:
控制器:
using Microsoft.AspNetCore.Mvc;
using WebApplication1.IServices;
using WebApplication1.Utility.SwaggerExt; namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
// 指定当前的控制器是哪个Swagger版本的 指定给 后台_version02
[ApiExplorerSettings(IgnoreApi = false, GroupName = nameof(ApiVersions.endApi))]
public class LoginController : ControllerBase
{
private readonly Calc calc;
private readonly TestService testService;
public LoginController(Calc calc, TestService testService)
{
this.calc = calc;
this.testService = testService;
}
/// <summary>
/// 求和服务
/// </summary>
/// <param name="i"></param>
/// <param name="j"></param>
/// <returns></returns>
[HttpGet]
public int TestAdd(int i , int j)
{
return calc.Add(i, j);
}
/// <summary>
/// 读取文件的服务 消耗时间长
/// </summary>
/// <returns></returns>
[HttpGet]
public int Test1()
{
return testService.Count;
}
}
}
求和服务:
namespace WebApplication1
{
public class Calc
{
public int Add(int i,int j)
{
return i + j;
}
}
}
计算文件中 exe 个数的服务:
namespace WebApplication1
{
public class TestService
{
private string[] files;
public TestService()
{
this.files = Directory.GetFiles("C:/Users/朱龙旭/Downloads", "*.exe",
SearchOption.AllDirectories);
}
// 计算exe文件的个数
public int Count
{
get
{
return this.files.Length;
}
}
}
}
解决办法:通过 action 参数注入 ;
[FromServices]
using Microsoft.AspNetCore.Mvc;
using WebApplication1.IServices;
using WebApplication1.Utility.SwaggerExt; namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
// 指定当前的控制器是哪个Swagger版本的 指定给 后台_version02
[ApiExplorerSettings(IgnoreApi = false, GroupName = nameof(ApiVersions.endApi))]
public class LoginController : ControllerBase
{
private readonly Calc calc;
public LoginController(Calc calc)
{
this.calc = calc;
}
/// <summary>
/// 求和服务
/// </summary>
/// <param name="i"></param>
/// <param name="j"></param>
/// <returns></returns>
[HttpGet]
public int TestAdd(int i , int j)
{
return calc.Add(i, j);
}
/// <summary>
/// 读取文件的服务 消耗时间长
/// </summary>
/// <returns></returns>
[HttpGet]
public string Test1([FromServices] TestService testService,string kk)
{
return testService.Count.ToString() + "***" + kk;
}
}
}
public string Test1([FromServices] TestService testService,string kk)
{
return testService.Count.ToString() + "***" + kk;
}
C# Webapi 简单的依赖注入-构造函数的更多相关文章
- Ninject依赖注入——构造函数、属性、方法和字段的注入
Ninject依赖注入——构造函数.属性.方法和字段的注入(三) 1.Ninject简介 Ninject是基于.Net平台的依赖注入框架,它能够将应用程序分离成一个个高内聚.低耦合(loosely-c ...
- ASP.NET Core 依赖注入(构造函数注入,属性注入等)
原文:ASP.NET Core 依赖注入(构造函数注入,属性注入等) 如果你不熟悉ASP.NET Core依赖注入,先阅读文章: 在ASP.NET Core中使用依赖注入 构造函数注入 构造函数注 ...
- webapi框架搭建-依赖注入之autofac
前言 c#的依赖注入框架有unity.autofac,两个博主都用过,感觉unity比较简单而autofac的功能相对更丰富(自然也更复杂一点),本篇将基于前几篇已经创建好的webapi项目,引入au ...
- 简单解析依赖注入(控制反转)在Spring中的应用
IoC——Inversion of Control 控制反转DI——Dependency Injection 依赖注入 大家都知道,依赖注入是Spring中非常重要的一种设计模式.可能很多初学者 ...
- ASP.NET Core中的依赖注入: 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- TypeC一个微软开发的超简单.NET依赖注入/IoC容器
控制反转(IoC,Inversion of Control)是由Martin Fowler总结出来的一种设计模式,用来减少代码间的耦合.一般而言,控制反转分为依赖注入(Dependency Injec ...
- Ninject依赖注入——构造函数的注入
1.Ninject简介 Ninject是基于.Net平台的依赖注入框架,它能够将应用程序分离成一个个高内聚.低耦合(loosely-coupled, highly-cohesive)的模块,然后以一种 ...
- C++ 简单实现 依赖注入(IOC)
由于C++ 不支持“反射机制”, 在C++中需要实现依赖注入或控制反转需要增加辅助程序.例如在Windows 开发程序中根据类名动态创建对象,需要在类定义中增加宏.本文主要介绍C++ Ioc的一种实现 ...
- 使用Java注解实现简单的依赖注入
代码如下: /** * 注入的注解,为空,仅起标志作用 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @int ...
- Android 使用dagger2进行依赖注入(基础篇)
0. 前言 Dagger2是首个使用生成代码实现完整依赖注入的框架,极大减少了使用者的编码负担,本文主要介绍如何使用dagger2进行依赖注入.如果你不还不了解依赖注入,请看这一篇. 1. 简单的依赖 ...
随机推荐
- 【Java】java.util.ConcurrentModificationException
异常提示信息: java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.next ...
- CUDA11.3编译pytorch2.0.1报错:error: ‘nvmlProcessInfo_v1_t’ was not declared in this scope
问题如题: CUDA11.3编译pytorch2.0.1报错:error: 'nvmlProcessInfo_v1_t' was not declared in this scope 解决方法参考: ...
- 查看并添加python中库的搜索路径
根据前文 pip install --user 使用方法和注意事项--python中安装module库到用户packages路径中 我们知道python中除了自身的全局module lib路径以外还 ...
- 使用 Nuxt 3 的 defineRouteRules 进行页面级别的混合渲染
title: 使用 Nuxt 3 的 defineRouteRules 进行页面级别的混合渲染 date: 2024/8/12 updated: 2024/8/12 author: cmdragon ...
- 恶补基础知识:Java 栈与队列详解
@ 目录 前言 简介 栈 Java实现栈的示例代码: 栈的主要应用场景包括: 队列 Java实现队列的示例代码: LinkedList中的add方法和offer方法的区别 队列主要应用场景: 总结 前 ...
- tomcat发布两个项目报错webAppKey重复设置
两个项目的web.xml中都有一个日志监听器配置 <listener> <listener-class> org.springframework.web.util.Log4jC ...
- 3. 从0开始学ARM-ARM模式、寄存器、流水线
关于ARM的一些基本概念,大家可以参考我之前的文章: <到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 关于ARM指令用到的IDE开发 ...
- WM_LBUTTONDOWN,WM_LBUTTONUP
WM_LBUTTONDOWN //鼠标左键按下消息WM_LBUTTONUP //鼠标左键弹起消息参数和按下一样 当用户在窗口的客户区域中按住鼠标左键时,会发布WM_LBUTTONDOWN消息.如果未捕 ...
- Spherical Voxelization
Spherical Voxelization 标签: voxelization AI 摘要: 文档介绍了球面体素化的过程,包括重要的类和方法,如ConvertToSphericalVoxel和sphe ...
- SPSS25.0中文破解版安装教程及使用教程
目录 第一步,下载链接: 下载并解压,管理员身份运行SPSS 25 64bit.exe: 第二步,安装过程一路默认,安装路径可以改变,然后等待安装完成即可: 第三步,安装完成后,立即启动SPPS; 第 ...