栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

[Asp.Net Core]Autofac多种注入

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Asp.Net Core]Autofac多种注入

具体实现
    [Intercept(typeof(CustomAutofacAop))]
    public class TestServiceA : ITestServiceA
    {
       
        public TestServiceA()
        {
            Console.WriteLine($"{this.GetType().Name}被构造。。。");
        }

        public virtual void Show()
        {
            Console.WriteLine("A123456");
        }
    }
    public class TestServiceB : ITestServiceB
    {

        public ITestServiceA _iTestServiceA = null;

        public void SetService(ITestServiceA iTestServiceA)
        {
            _iTestServiceA = iTestServiceA;
        }

        public TestServiceB(ITestServiceA iTestServiceA)
        {
            Console.WriteLine($"{this.GetType().Name}被构造。。。");
        }


        public void Show()
        {
            //_iTestServiceA.Show();
            Console.WriteLine($"This is TestServiceB B123456");
        }
    }
    public class TestServiceC : ITestServiceC
    {
        public TestServiceC(ITestServiceB iTestServiceB)
        {
            Console.WriteLine($"{this.GetType().Name}被构造。。。");
        }
        public void Show()
        {
            Console.WriteLine("C123456");
        }
    }
{
    public class TestServiceD : ITestServiceD
    {
        public string strin { get; set; }
        public ITestServiceA _iTestServiceA { get; set; }
        public ITestServiceB _iTestServiceB { get; set; } 
        public ITestServiceC _iTestServiceC { get; set; }

        public TestServiceD()
        {
            Console.WriteLine($"{this.GetType().Name}被构造。。。");
        }
        public void Show()
        {
            _iTestServiceA.Show();
            Console.WriteLine("D123456");
        }
    }
1.构造函数注入
                ContainerBuilder containerBuilder = new ContainerBuilder(); //创建容器
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As();
                IContainer container = containerBuilder.Build(); //得到容器
                ITestServiceB testServiceB = container.Resolve(); //获取服务
                testServiceB.Show();
2.属性注入
                ContainerBuilder containerBuilder = new ContainerBuilder(); //创建容器
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As().PropertiesAutowired();
                IContainer container = containerBuilder.Build(); //得到容器
                ITestServiceD testServiceD = container.Resolve(); //获取服务
                testServiceD.Show();
3.方法注入
                ContainerBuilder containerBuilder = new ContainerBuilder(); //创建容器
                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().OnActivated(e =>
                e.Instance.SetService(e.Context.Resolve())).As();

                containerBuilder.RegisterType().As();
                containerBuilder.RegisterType().As().PropertiesAutowired();
                IContainer container = containerBuilder.Build(); //得到容器
                ITestServiceB testServiceB = container.Resolve(); //获取服务
                testServiceB.Show();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号