文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Lamar怎么在ASP.Net Core项目中使用

2023-06-13 05:53

关注

这篇文章将为大家详细讲解有关Lamar怎么在ASP.Net Core项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

为什么要用 Lamar 实现依赖注入

要说 .NET 世界最早的依赖注入容器,当属 StructureMap,但 StructureMap 最大的缺点就是性能问题,而本篇的 Lamar 则非常轻量级,并提供了丰富的可供调用API,Lamar 和 StructureMap 非常类似,如果你以前 StructureMap 玩的溜的话,切到 Lamar 上是非常容易的。

安装 Lamar

要想在 ASP.Net Core 中使用 Lamar,需要通过 nuget 安装如下两个包。

你可以通过可视化界面 Manage NuGet Packages。

Lamar怎么在ASP.Net Core项目中使用

或者如下命令进行安装。

Install-Package Lamar Install-Package Lamar.Microsoft.DependencyInjection

创建 IDBManager 和 DBManager

首先创建一个 IDBManager 接口类,用于后续做依赖注入用,代码定义如下:

 public interface IDBManager {  void Initialize();  bool Save<T>(T obj); }

接下来定义 DBManager 类并实现接口 IDBManager ,代码定义如下:

 public class DBManager: IDBManager {  public void Initialize()  {   //Write some initialization code here  }  public bool Save<T>(T obj)  {   //Write your code here   return true;  } }

配置 Lamar

Lamar.Microsoft.DependencyInjection 包提供了一个 UseLamar() 方法能够将 Lamar 引入到 ASP.Net Core 基础架构中,下面的代码展示了如何去实现。

 public class Program {  public static void Main(string[] args)  {   CreateHostBuilder(args).UseLamar().Build().Run();  }  public static IHostBuilder CreateHostBuilder(string[] args) =>   Host.CreateDefaultBuilder(args)    .ConfigureWebHostDefaults(webBuilder =>    {     webBuilder.UseStartup<Startup>();    }); }

配置 Lamar 容器

接下来可以在 ConfigureServices() 方法中配置 Container 容器,代码如下:

  public void ConfigureServices(IServiceCollection services)  {   var container = new Container(x =>   {    x.AddTransient<IDBManager, DBManager>();   });   services.AddControllersWithViews();  }

值得注意的是 Lamar 拥有强大的 自动装配 能力,它可以搜索请求类型和所需类型的构造函数,并构建其需要的实例,下面的代码展示了如何通过 ConfigureContainer() 方法去实现,这里我将该方法放在 Startup 类中,完整代码如下:

 public class Startup {  // This method gets called by the runtime. Use this method to add services to the container.  public void ConfigureServices(IServiceCollection services)  {   var container = new Container(x =>   {    x.AddTransient<IDBManager, DBManager>();   });   services.AddControllersWithViews();  }  public void ConfigureContainer(ServiceRegistry services)  {   services.Scan(s =>   {    s.TheCallingAssembly();    s.WithDefaultConventions();   });  } }

Controller 中注入 DBManager 实例

接下来就可以在 Controller 中通过依赖注入的方式获取 DBManager 实例啦,实现代码如下:

 public class HomeController : Controller {  private readonly ILogger<HomeController> _logger;  private IDBManager _dbManager;  public HomeController(ILogger<HomeController> logger, IDBManager dbManager)  {   _logger = logger;   _dbManager = dbManager;  }  public IActionResult Index()  {   return View();  } }

关于Lamar怎么在ASP.Net Core项目中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯