.net core2.0下Ioc容器Autofac使用


Autofac基本使用

  • .net core MVC与Autofac
  • 属性注入
  • Autofac+Castle实现AOP
  • 代码封装简单使用
  • 特殊场景介绍
  • 总结
  • 回到顶部http://autofac.org,源码下载地址https://github.com/autofac/Autofac。

      下面以狗的列子来介绍autofac,nuget搜索Autofac进行安装

        public interface IDog
        {
            /// 
            /// 品种
            /// 
            string Breed { get; }
    
            /// 
            /// 名称
            /// 
            string Name { get; }
        }
    
        /// 
        /// 萨摩耶
        /// 
        public class Samoyed : IDog
        {
            /// 
            /// 品种
            /// 
            public string Breed
            {
                get
                {
                    return "Samoyed(萨摩耶)";
                }
            }
    
            /// 
            /// 名称
            /// 
            public string Name
            {
                get
                {
                    return "小黄";
                }
            }
        }
    
        /// 
        /// 藏獒
        /// 
        public class TibetanMastiff : IDog
        {
            /// 
            /// 品种
            /// 
            public string Breed
            {
                get
                {
                    return "Mastiff Class(獒犬类)";
                }
            }
    
            /// 
            /// 名称
            /// 
            public string Name
            {
                get
                {
                    return "小黑";
                }
            }
        }

      1.RegisterType 

    public static void Register()
    {
        var builder = new ContainerBuilder();
        //注册Samoyed指定为IDog实现
        builder.RegisterType().As();
        builder.RegisterType().As();
        using (var container = builder.Build())
        {
            var dogs = container.Resolve>();
            foreach (var dog in dogs)
            {
                 Console.WriteLine($"名称:{dog.Name},品种:{dog.Breed}");
            }
        }
    }        
      2.RegisterAssemblyTypes
    public static void RegisterAssemblyTypes()
    {
        var builder = new ContainerBuilder();
        //注册程序集下所有类型
        builder.RegisterAssemblyTypes(typeof(Program).Assembly).AsImplementedInterfaces();
        using (var container = builder.Build())
        {
            var dogs = container.Resolve>();
            foreach (var dog in dogs)
            {
                Console.WriteLine($"名称:{dog.Name},品种:{dog.Breed}");
            }
        }
    }

      直接注册程序集下的所有类型,AsImplementedInterfaces(让具体实现类型,可以该类型继承的所有接口类型找到该实现类型)

      3.RegisterInstance

    TibetanMastiff d = new TibetanMastiff();
    builder.RegisterInstance(d).As();

      4.RegisterModule

      这种模式需要使用配置文件进行注册,个人更喜欢代码直接注册的方式,毕竟配置文件修改容易遗忘和出错。这里就不介绍该方式了。 

          

      遗留问题:上面的注册代码,自己写写demo的时候没啥问题。但是运用到项目里面就很繁琐了,需要自己一个个类型注册,后面会提供解决方案。

    回到顶部回到顶部回到顶部回到顶部回到顶部回到顶部http://autofac.readthedocs.io/en/latest/getting-started/index.html。

      下面给出本文示例代码:Ywdsoft.AutofacTest

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持。

    感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是焰尾迭 。