• APB VNext系列(一):依赖注入


    兄弟姐妹们,还有三个月就2021年了,给大家提前拜个早年~嘻嘻。

    本系列我将梳理ABP VNext中的技术实现,在自我记录的同时,也帮大家更加深入了解下这个最近非常火的框架。

    什么是ABP VNext这里就不做介绍了,大家可以去看资料了解下。这里讲解我们实际业务中如何使用该框架。

    1.简介

       ABP中依赖注入是基于Microsoft.Extensions.DependencyInjection实现的,在组件开发过程中其实现方式和包括AutoFac在内的第三方类库大同小异。

      在实际的开发使用中,我们并没有使用第三方类库,完全基于Microsoft的依赖注入扩展库进行的组件开发。

    2.实现方式介绍

       在我们基础框架中,依赖注入组件的本质是基于名称匹配,即xxx继承Ixxx,然后通过xxx的名称当做后缀来匹配。

       首先我们会有一个公共的接口类,所有要实现依赖注入的类都需要集成这个接口类,共有3个,对应着三种不同的注入方式。

        public interface ITransientDependency
        {
    
        }
        public interface IScopedDependency
        {
        }
        public interface ISingletonDependency
        {
    
        }

    我们需要在程序及加载的时候去对这些实现了ITransientDependency以及另外两个接口的类进行依赖注入:

    private static List<Type> GetDefaultServices(Type type)
            {
                var serviceTypes = new List<Type>();
    
                foreach (var interfaceType in type.GetTypeInfo().GetInterfaces())
                {
                    var interfaceName = interfaceType.Name;
    
                    if (interfaceName.StartsWith("I"))
                    {
                        interfaceName = interfaceName.Right(interfaceName.Length - 1);
                    }
    
                    if (type.Name.EndsWith(interfaceName))
                    {
                        serviceTypes.Add(interfaceType);
                    }
                }
    
                return serviceTypes;
            }

    这个就是匹配定义和实现的核心方法,我们首先会取到所有的自定义类,然后通过 type.GetTypeInfo().GetInterfaces() 方法获取每个自定义类继承的接口,默认是定义的接口名称是在实现类名前面加一个I,如果去掉I之后名称相同,则会被匹配到一起。

  • 相关阅读:
    行人检测
    异步推理SSD
    道路分割
    NATS_13:NATS Streaming案例讲解
    csv模块
    头部姿态评估
    行人属性
    图像、视频读取显示及操作
    natspy
    openvino_yoloV3
  • 原文地址:https://www.cnblogs.com/weiBlog/p/13702917.html
Copyright © 2020-2023  润新知