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);
    
        }
    
  • 相关阅读:
    Mac 应用程序中的App在Launchpad中不显示
    oh-my-zsh的安装
    用Lambda 表达式实现Runnable
    用Lambda 表达式实现Runnable
    记录Nacos配置Mysql数据库连接失败解决
    Mac最好用的终端iTerm2安装及配置
    MySQL安装设置密码策略问题
    构建微服务模块流程
    dependencies与dependencyManagement的区别
    winSocket 2 简单的可持续的socket
  • 原文地址:https://www.cnblogs.com/Fengyinyong/p/14248485.html
Copyright © 2011-2022 走看看