C#依赖反转去耦合

本文探讨了依赖注入(DI)容器在.NET Core中的应用,通过具体代码示例展示了如何使用Microsoft.Extensions.DependencyInjection来注册和解析依赖,实现了解耦和多态性。通过更换iAuto接口的实现类,如BWM或Audi,可以轻松改变Driver的行为,体现了依赖反转原则的优势。
摘要由CSDN通过智能技术生成

创建Driver时本来需要一个iAuto对应,sp回去容器里找;
由于之前注册了AddScoped(typeof(iAuto),typeof(BWM))
所以会自动创建一个BWM的实例传入Driver构造器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;

namespace ConsoleApp14
{
    class Program
    {
        static void Main(string[] args)//多态
        {
            //依赖反转:降耦合
            ServiceCollection serviceDescriptors = new ServiceCollection();
            //想开奥迪将bwm换成audi即可
            serviceDescriptors.AddScoped(typeof(iAuto),typeof(BWM));
            serviceDescriptors.AddScoped<Driver>();
            ServiceProvider sp = serviceDescriptors.BuildServiceProvider();
            //--------------------注册完成--------------------------
            var man = sp.GetService<Driver>();
            man.say();
        }
    }
    interface iAuto
    {
        void run();
        void race();
    }
    class BWM : iAuto
    {
        public void race()
        {
            Console.WriteLine("bwm race");
        }

        public void run()
        {
            Console.WriteLine("bwm is run");
        }
    }
    class Audi : iAuto
    {
        public void race()
        {
            Console.WriteLine("audi race");
        }

        public void run()
        {
            Console.WriteLine("audi is run");
        }
    }
    class Driver
    {
        private iAuto auto;
        public Driver(iAuto iAuto)
        {
            this.auto = iAuto;
        }
        public void say()
        {
            auto.race();
            auto.run();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值