zoukankan      html  css  js  c++  java
  • Autofac简单学习

    学习地址:https://masuit.com/1192?kw=Autofac

    强烈推荐勤快哥的小站https://masuit.com

    资源多多

    整体代码结构如下:

    一、简单默认方式注入

    1、IService

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace IService
    {
        public interface IUserInfoService
        {
            string[] GetUsers();
        }
    }

    2、Service

    using IService;
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Service
    {
        public class UserInfoService: IUserInfoService
        {
            public string[] GetUsers() {
                return new[] { "张三","李四"};
            }
        }
    }
    

    3、注入

    namespace TestAutoFac
    {
        public class AutofacModuleRegister : Autofac.Module
        {
            protected override void Load(ContainerBuilder builder)
            {
                var basePath = AppContext.BaseDirectory;
                var servicesDllFile = Path.Combine(basePath, "Service.dll");
                var assemblysServices = Assembly.LoadFrom(servicesDllFile);
                //带有接口的带有接口层的服务注入
                builder.RegisterAssemblyTypes(assemblysServices)
                          .AsImplementedInterfaces()
                          .InstancePerDependency();
            }
        }
    }
    

      

    二、属性注入  

    测试了下,跨项目好像不行,只能在同一个项目中测试了一下。

     接口和类实现与上面的代码一致。

    关键点如下:

    1、注入

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Threading.Tasks;
    
    namespace TestAutoFac
    {
        public class AutofacModuleRegister : Autofac.Module
        {
            protected override void Load(ContainerBuilder builder)
            {
                            //属性注入
                builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces()
                    .Where(t => t.Name.EndsWith("Controller") || t.Name.EndsWith("UserInfo"))
                    .PropertiesAutowired().AsSelf().InstancePerDependency();
            }
        }
    }
    

    2、组件依赖

            public void ConfigureServices(IServiceCollection services)
            {
                services.AddControllersWithViews();
                services.AddMvc().AddControllersAsServices();//这个加一下
            }
    

      

    更具体的可以见

    https://masuit.com/1435?kw=Autofac

  • 相关阅读:
    程序报错怎么进入调试
    va01 无定价过程能被确定
    维护销售区域数据
    SAP VA01 消息 没有用于售达方 XXXXXX 的客户主记录存在
    SAP常见问题与解决方法
    客户没有对功能定义,合作伙伴
    SAP名词解释-售达方|送达方
    英语-20210312
    配置预付款-科目对应关系FBKP
    unzip 解压指定的文件夹或文件 到指定的目录
  • 原文地址:https://www.cnblogs.com/sailing92/p/14155319.html
Copyright © 2011-2022 走看看