首页 > 其他分享 >DI依赖注入

DI依赖注入

时间:2023-12-02 09:13:38浏览次数:26  
标签:IService 依赖 service DoSomething DI void var public 注入

using Autofac;

public interface IService
{
    void DoSomething();
}

public class Service : IService
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}

// 注册服务
var builder = new ContainerBuilder();
builder.RegisterType<Service>().As<IService>();
var container = builder.Build();

// 解析依赖
var service = container.Resolve<IService>();

// 使用服务
service.DoSomething();
using Microsoft.Practices.Unity;

public interface IService
{
    void DoSomething();
}

public class Service : IService
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}

// 注册服务
var container = new UnityContainer();
container.RegisterType<IService, Service>();

// 解析依赖
var service = container.Resolve<IService>();

// 使用服务
service.DoSomething();
using Ninject;

public interface IService
{
    void DoSomething();
}

public class Service : IService
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}

// 注册服务
var kernel = new StandardKernel();
kernel.Bind<IService>().To<Service>();

// 解析依赖
var service = kernel.Get<IService>();

// 使用服务
service.DoSomething();
using SimpleInjector;

public interface IService
{
    void DoSomething();
}

public class Service : IService
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}

// 注册服务
var container = new Container();
container.Register<IService, Service>();

// 解析依赖
var service = container.GetInstance<IService>();

// 使用服务
service.DoSomething();
using Microsoft.Extensions.DependencyInjection;
using System;

public interface IService
{
    void DoSomething();
}

public class Service : IService
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建服务集合
        var services = new ServiceCollection();

        // 注册服务
        services.AddTransient<IService, Service>();

        // 构建服务提供程序
        var serviceProvider = services.BuildServiceProvider();

        // 解析依赖
        var service = serviceProvider.GetRequiredService<IService>();

        // 使用服务
        service.DoSomething();
    }
}

 

标签:IService,依赖,service,DoSomething,DI,void,var,public,注入
From: https://www.cnblogs.com/LiveCoding/p/17871202.html

相关文章

  • VisualStudio 如何调试 VBS 代码
    在调试VBS代码前,需要在VisualStudio(以下简称VS)中配置VBS调试工具,菜单栏工具->外部工具,在弹出的对话框中点击添加,如下:设置的相关参数如下:标题:VBScriptDebug命令:C:\Windows\System32\cscript.exe参数://nologo//X$(ItemPath)初始目录:$(ItemDir)最后确定,这时菜......
  • 浅谈如何防止sql注入
    ✨前言✨本篇文章主要在于了解SQL注入攻击原理及防御策略......
  • 如何使用 PreparedStatement 来避免 SQL 注入,并提高性能?
    ✨前言✨本篇文章主要如何使用PreparedStatement来避免SQL注入,并提高性能?......
  • .net core Razor Page TempData不工作,RedirectToPage后无法获取值怎么办?
    问题:.netcore旧项目更新到.netcore8.0后,发现之前的错误反馈信息显示不出来了,经过反复搜索,询问人工智能无果。之前怀疑/测试过:1.新版浏览器chrome访问https://localhost是否限制了Cookie2.浏览器是否受欧盟Cookie法规的要求进行了限制。3.写法错误RazorpageTempData......
  • Redis为什么是单线程及高并发的原因
    Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快2.redis是单线程的,省去了很多上下文切换线程的时间3.redis使用多路复用技术,可以外理并发的连接。非阻塞I0内部实现采用epol,采用了epol+自己实现的简单的事件框架。epol中的读、写、关闭、连接都转化成了事件,然后......
  • Maven使用终端下载非依赖形式的jar包
    Maven项目下载jar包(非依赖形式)//已知jar包的本地路径D:\12140\Desktops\java\gson-2.8.5.jar//根据该jar包的实际情况在项目的终端下载jar包mvninstall:install-file-Dfile=D:/12140/Desktops/java/gson-2.8.5.jar-DgroupId=com.google-DartifactId=gson-Dversion=2.8.5......
  • conda环境下安装nvidia-nvcc
    参考:https://www.cnblogs.com/littletreee/p/17234053.html  conda安装Pytorch或TensorFlow的时候是默认不安装nvcc,但是有时候需要编译nvidia的扩展包的,这时候就需要进行nvcc编译,这里提供conda环境下的nvcc安装。   =========================================  ......
  • Codeforces Round 912 (Div. 2) E - Geo Game
    考虑什么时候会改变答案的奇偶,显然可以根据\(x\oplusy\)的奇偶性分组,在组内进行跳跃不会改变,只有当组间跳跃的时候才会改变。打表观察先手什么时候必胜,其中:\(u\)是当前获胜目标为奇/偶(1/0),\(v\)是位于哪一组,\(a,b\)代表两组还剩多少,\(st\)代表当前答案的奇偶性。intdfs(intu,......
  • Misc_XCTF_WriteUp | can_has_stdio?
    题目分析按海星的组成符号来看,应该是brainfuck语言。翻译语言,得到flag:我觉得海星Flagflag{esolangs_for_fun_and_profit}参考CTF中那些脑洞大开的编码和加密-jack_Meng-博客园Brainfuck_Ook!Obfuscation_Encoding[splitbrain.org]......
  • Flask实践-使用pymysql时解决SQL注入问题
    最近在尝试使用flask编写一个网站防篡改监测平台,开始只注意功能,未注意注入问题,开始的SQL执行是拼接的方式,导致SQL注入: 用报错注入:修改为参数化查询: ......