最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET中IoC框架Autofac用法講解

 更新時(shí)間:2021年12月22日 14:30:41   作者:南榮相如談編程  
本文詳細(xì)講解了.NET中IoC框架Autofac的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1 前置閱讀

在閱讀本文章之前,你可以先閱讀:

2 簡(jiǎn)介

Autofac與C#語(yǔ)言的結(jié)合非常緊密,并學(xué)習(xí)它非常的簡(jiǎn)單,也是.NET領(lǐng)域最為流行的IoC框架之一。

3 使用

首先,將Autofac的NuGet軟件包安裝到您的應(yīng)用程序中。

Autofac

然后,我們通過(guò)創(chuàng)建ContainerBuilder來(lái)注冊(cè)組件。

var builder = new ContainerBuilder();
builder.RegisterType<Knife>();
builder.RegisterType<Actor>();

接著,可以通過(guò)在一個(gè)已存在的生命周期上調(diào)用 BeginLifetimeScope() 方法來(lái)創(chuàng)建另一個(gè)生命周期作用域, 以根容器作為起始。生命周期作用域是可釋放的并且追蹤組件的釋放, 因此確保你總是調(diào)用了 "Dispose()"" 或者把它們包裹在 "using" 語(yǔ)句內(nèi)。

using (var scope = container.BeginLifetimeScope())
{
}

最后,在注冊(cè)完組件并暴露相應(yīng)的服務(wù)后, 你可以從創(chuàng)建的容器或其子生命周期中解析服務(wù). 讓我們使用 Resolve() 方法來(lái)實(shí)現(xiàn):

using (var scope = container.BeginLifetimeScope())
{
    var actor = scope.Resolve<Actor>();
    actor.Kill();
}

讓我們來(lái)看看完整代碼:

using System;

namespace Autofac.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<Knife>();
            builder.RegisterType<Actor>();

            var container = builder.Build();
            using (var scope = container.BeginLifetimeScope())
            {
                var actor = scope.Resolve<Actor>();
                actor.Kill();
            }

            Console.ReadKey();
        }
    }
}

讓我們來(lái)看看輸出結(jié)果:

小明用刀殺怪

4 在 Asp.Net Core 中使用

首先,將Autofac,Autofac.Extensions.DependencyInjection的NuGet軟件包安裝到您的應(yīng)用程序中。

dotnet add package Autofac
dotnet add package Autofac.Extensions.DependencyInjection

然后,在Program.Main中增加.UseServiceProviderFactory(new AutofacServiceProviderFactory())

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .UseServiceProviderFactory(new AutofacServiceProviderFactory());

接著,在Startup.ConfigureServices中增加services.AddControllersWithViews();

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "Autofac.WebApi", Version = "v1" });
    });

    services.AddControllersWithViews();
}

接著,在Startup.ConfigureContainer方法中,將Knife,Actor注冊(cè)到Autofac中ContainerBuilder。

public void ConfigureContainer(ContainerBuilder builder)
{
    builder.RegisterType<Knife>();
    builder.RegisterType<Actor>();
}

最后,增加HomeController,執(zhí)行actor.Kill。

using Microsoft.AspNetCore.Mvc;
using System;

namespace Autofac.WebApi.Controllers
{
    [Route("[controller]")]
    [ApiController]
    public class HomeController : Controller
    {

        private readonly Actor actor;
        public HomeController(Actor actor)
        {
            this.actor = actor ?? throw new ArgumentNullException(nameof(actor));
        }

        [HttpGet]
        public string Get()
        {
            return actor.Kill();
        }
    }
}

啟動(dòng)調(diào)試,讓我們來(lái)看看輸出結(jié)果:

小明用刀殺怪

到此這篇關(guān)于.NET中IoC框架Autofac用法講解的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

汝城县| 扶风县| 桂阳县| 搜索| 资溪县| 开阳县| 涿州市| 尤溪县| 山丹县| 凌源市| 商河县| 舒兰市| 杭州市| 台北市| 安西县| 西乌| 陵川县| 通化县| 金昌市| 旺苍县| 图们市| 扬中市| 阳原县| 太白县| 舟山市| 杭锦旗| 赞皇县| 杭锦后旗| 平泉县| 河南省| 柳河县| 崇阳县| 芜湖市| 绵竹市| 金溪县| 南川市| 宜兴市| 客服| 葫芦岛市| 米林县| 蓬莱市|