• 一个非常简单的入门级ASP.NET Core Autofac使用


    好好学习,天天向上。

    这是结构。

     方法一 在Program中,添加Autofac服务

    1:

     1         public static void Main(string[] args)
     2         {
     3             CreateHostBuilder(args).Build().Run();
     4         }
     5         //    public static IHostBuilder CreateHostBuilder(string[] args) =>
     6         //Host.CreateDefaultBuilder(args)
     7         //    .ConfigureWebHostDefaults(webBuilder =>
     8         //    {
     9         //        webBuilder.UseStartup<Startup>();
    10         //    }).UseServiceProviderFactory(new AutofacServiceProviderFactory());
    11         public static IHostBuilder CreateHostBuilder(string[] args) =>
    12             Host.CreateDefaultBuilder(args)
    13             .UseServiceProviderFactory(new AutofacServiceProviderFactory())//添加Autofac服务
    14                 .ConfigureWebHostDefaults(webBuilder =>
    15                 {
    16                     webBuilder.UseStartup<Startup>();
    17                 });

    2: Startup类修改ConfigureContainer方法

    1   public void ConfigureContainer(ContainerBuilder builder)
    2         {
    3           builder.RegisterType<OneService>().As<IOneService>(); 
    4         }

    方法二,  继承module 

    1. 创建CustomAutofacModule 类

     1  public class CustomAutofacModule :Autofac.Module
     2     {
     3         /// <summary>
     4         /// AutoFac注册类
     5         /// </summary>
     6         /// <param name="builder"></param>
     7         protected override void Load(ContainerBuilder builder)
     8         {
     9             /*单次注入*/
    10             builder.RegisterType<OneService>().As<IService>();
    11            14         }
    15        24     }

    2: Startup类修改ConfigureContainer方法

      public void ConfigureContainer(ContainerBuilder builder)
            {
                // 直接用Autofac注册我们自定义的 
                //
                builder.RegisterModule(new CustomAutofacModule());
    
            }

    批量注入

    修改CustomAutofacModule 类 

     1  public class CustomAutofacModule :Autofac.Module
     2     {
     3         /// <summary>
     4         /// AutoFac注册类
     5         /// </summary>
     6         /// <param name="builder"></param>
     7         protected override void Load(ContainerBuilder builder)
     8         {
     9             ///*单次注入*/
    10             //builder.RegisterType<OneService>().As<IService>();
    11             //注册Service中的对象,Service中的类要以Service结尾,否则注册失败
    12             builder.RegisterAssemblyTypes(GetAssemblyByName("Services")).
    13                 Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces();
    14         }
    15         /// <summary>
    16         /// 根据程序集名称获取程序集
    17         /// </summary>
    18         /// <param name="AssemblyName">程序集名称</param>
    19         /// <returns></returns>
    20         public static Assembly GetAssemblyByName(String AssemblyName)
    21         {
    22             return Assembly.Load(AssemblyName);
    23         }
    24     }

    之后再控制器注入调用一下就好(接口方法就自己去随便定义一下了,这只是一个初级入门。)

     1     public class HomeController : Controller
     2     {
     3         private readonly ILogger<HomeController> _logger;
     4         private readonly IOneService _server;
     5         private readonly IArticleService _articleService;
     6 
     7         public HomeController(ILogger<HomeController> logger, IOneService service, IArticleService articleService)
     8         {
     9             _logger = logger;
    10             _server = service;
    11             _articleService = articleService;
    12         }
    13 
    14         public IActionResult Index()
    15         {
    16             string a = _server.SayHi();
    17             string b = _articleService.article();
    18             return View();
    19         }
    20 
    21       
    22     }

    不知道如何深入学习, 有哪位能够指点一下学习道路。感激不尽

  • 相关阅读:
    java-实现两种排序方法
    暑假,一遍一遍敲代码吧!
    java学习-如何定义一个函数及其简单练习
    关于函数重载的理解
    java学习中关于函数的练习
    在校大三学生,真心想学好计算机。可是,,,,没有目标,。。。。。。
    伪分布式网络爬虫框架的设计与自定义实现(一)
    网站架构成长路程之 箴言
    使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
    使用visualStudio2017创建一个简单的控制台程序
  • 原文地址:https://www.cnblogs.com/Cjb8973/p/13858902.html
Copyright © 2020-2023  润新知