首页 > 其他分享 >dotnet 依赖注入 服务定位器

dotnet 依赖注入 服务定位器

时间:2024-02-09 21:44:20浏览次数:32  
标签:定位器 依赖 Name services dotnet ITestService public cs

依赖注入的基本使用1/Program.cs

using Microsoft.Extensions.DependencyInjection;
 

ServiceCollection services = new ServiceCollection();
// 瞬态服务
services.AddTransient<TestServiceImpl>(); // => false

// 作用域服务
// services.AddScoped<TestServiceImpl>(); // => true

// 单例服务
// services.AddSingleton<TestServiceImpl>(); // => true

using (ServiceProvider sp = services.BuildServiceProvider())
{
    // 服务定位器
    var ts1 = sp.GetRequiredService<TestServiceImpl>();
    var ts2 = sp.GetRequiredService<TestServiceImpl>();
    Console.WriteLine(object.ReferenceEquals(ts1, ts2));
}
  1. 核心代码

依赖注入的基本使用1/TestServiceImpl2.cs

public class TestServiceImpl2 : ITestService
{
    public string Name { get; set; }
    public void SayHi()
    {
        Console.WriteLine($"你好,我是{Name}");
    }
}

依赖注入的基本使用1/TestServiceImpl.cs

public class TestServiceImpl : ITestService
{
    public string Name { get; set; }
    public void SayHi()
    {
        Console.WriteLine($"Hi, I'm {Name}");
    }
}

依赖注入的基本使用1/ITestService.cs

public interface ITestService
{
    public string Name { get; set; }
    public void SayHi();
}

标签:定位器,依赖,Name,services,dotnet,ITestService,public,cs
From: https://www.cnblogs.com/zhuoss/p/18012630

相关文章

  • 对时间强依赖的方法如何做单元测试
    背景项目当中需要进行业务时间的校验,如上午9:00-下午17:00,在9:00前或17:00后是不能处理相关业务的。因此在业务校验的Service中定义了一个checkBizTime()方法。原本代码如下:publicvoidcheckBizTime(){DatecurrentTime=newDate();//DateUtil.parse的......
  • 2月摸鱼计划04 Go语言依赖管理
    2.0依赖管理这一章我们主要讲解go的依赖管理,主要涉及go依赖管理的演进路线和gomodule实践依赖指各种开发包对于helloworld以及类似的单体函数只需要依赖原生SDK,而实际工程会相对复杂,我们不可能基于标准库0~1编码搭建,而更多的关注业务逻辑的实现,而其他的涉及框架、日志、driver......
  • 解决golang依赖库被删库问题
    调用的开源库引用了github个人仓库,如果作者删除了仓库或者改成私人仓库,那么gomodtidy就会失败以github.com/mitchellh/osext为例,作者因为某些原因删除了仓库,并给出了替代的官方仓库github.com/kardianos/osext使用replace命令gomodedit-replace[oldgitpackage]@[versi......
  • "resolutions" 主要用于解决依赖树中可能存在的版本冲突问题
    "resolutions":{"es6-iterator//es5-ext":"0.10.50","d//es5-ext":"0.10.50","es5-ext":"0.10.50"}这个是什么意思?这段配置是出现在package.json文件中的"resolutions"字段,它在使用Yarn2(berry)或......
  • 项目依赖
    1、数据库驱动:mysql-connector-j<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.3.0</version></dependency>2、连接数据库:spring-boot-starter-jdbc,根据自己的spring......
  • yarn安装太慢,如何多线程安装依赖
    Yarn本身设计时就考虑到了并行安装依赖以提高速度,它默认使用多线程来下载和安装包。当执行yarninstall时,Yarn会利用所有可用的CPU核心,并通过其内部的并行化机制来加速安装过程。如果你发现Yarn在安装依赖时仍然显得较慢,可以尝试以下方法来优化:启用网络代理:如果你的网......
  • 安装dotnet下的诊断工具
    1.安装dotnet下的三个诊断工具dotnet-counters一个性能监视工具,用于临时运行状况监视和初级性能调查,你可以通过命令查看和存储,当前程序的运行时信息,它可以收集CPU,内存,GC,线程,异常等信息dotnet-trace一个跨平台的.NETCore工具,在不使用本机探查器的情况下启用正在运行的进......
  • DotNetty 封装的TcpClient
    .net里 Netty资料不多,做个记录publicclassNetworkCommunicator:ICommunicator{#regionNetty本来想用静态,后来觉得多个client公用一个netty可能分不清返回的数据,先这样,后期要是吃资源再优化Bootstrap_NettyBoot;IEventLoopGroup_NettyEventLoop;......
  • DotNetty 封装的 UdpClient
    DotNetty资料较少,UdpClient和TcpClient略有不同publicclassUdpCommunicator:ICommunicator{privateIChannel?_ClientChannel;privateBootstrap?_Bootstrap;IEventLoopGroup?_LoopGroup;privateTaskCompletionSource<byte[]>_ResponseComp......
  • 在idea打包普通项目jar包(入门级含依赖)
    在idea打包普通项目(含依赖)准备一个Mian主方法和数学工具类用来测试,还有一个演示用的依赖jar包第一步选择file下的projectstructure第二步选择具有依赖的打包方式 第三步选择要打包的模块和主函数第四步添加项目依赖的jar包最后点击apply第五步打包测试......