zoukankan      html  css  js  c++  java
  • .NETCore 内置DI扩展 Scrutor

    Scrutor 不是依赖注入框架,而是.NET内置DI的扩展包。弥补了.NET内置DI的不足。其底层还是内置DI,性能比第三方DI框架Autofac更高效。但是没有Autofac强大。如果只是为了用程序集注册,而用不到autofac的强大功能,建议用scrutor。

    第一步:Nuget添加Scrutor

    第二步:编码

    接口、服务类 Service

    namespace WebApplication_scrutor
    {
        public interface IMessageService
        {
            public string Text { get; set; }
        }
        public class MessageService : IMessageService
        {
            public string Text { get; set; }
            public MessageService()
            {
                Text = "Hello Message1111";
            }
        }
    }
    

    startup 类ConfigureServices 方法

    public void ConfigureServices(IServiceCollection services)
            {
                //注册webapi服务
                services.AddControllers();
                //scrutor的方式
                services.Scan(selector => selector
                    //加载startup 类所在的程序集
                    .FromAssemblyOf<Startup>()
                    //过滤程序集中需要注册的类
                    .AddClasses(classes => classes.Where(t => t.Name.EndsWith("Service")))
    
                    //暴露匹配的接口
                    .AsMatchingInterface()
                    //.AsImplementedInterfaces() //暴露的是每一个接口
                    //.As(t => t.GetInterfaces()) //暴露所有接口
                    //.AsSelf() //暴露自己,因为是单一类型,没有接口
    
                    //设置生命周期
                    .WithScopedLifetime()
                    ) ;
            }
    

    Controller

    [Route("api/[controller]")]
        [ApiController]
        public class MessageController : ControllerBase
        {
            private readonly IMessageService messageService;
            public MessageController(IMessageService _messageService)
            {
                messageService = _messageService;
            }
    
            public IActionResult Get() => Ok(messageService.Text);
    
        }
    
  • 相关阅读:
    每日一题(文化课)一题---------19/7/30
    XXXXX,这个域名
    CF1037E. Trips
    bzoj3124: [Sdoi2013]直径 树形dp two points
    luogu P3952 时间复杂度 模拟
    AGC016D
    CF444E. DZY Loves Planting
    模拟赛
    HDU 3949 XOR [线性基|高斯消元]
    博客搬家
  • 原文地址:https://www.cnblogs.com/Fengyinyong/p/14248485.html
Copyright © 2011-2022 走看看