如何在 ASP.Net Core 中使用 Lamar
2021-03-12 04:27
标签:测试 byte create uil 单元测试 scan 之间 mic ogr ASP.Net Core 自带了一个极简的 Lamar 是一个流行的,高效的,模块化的 IOC 容器,这篇文章我们将会讨论如何在 ASP.Net Core 中使用 Lamar。 要说 .NET 世界最早的依赖注入容器,当属 要想在 ASP.Net Core 中使用 Lamar,需要通过 nuget 安装如下两个包。 Lamar Lamar.Microsoft.DependencyInjection 你可以通过可视化界面 或者如下命令进行安装。 首先创建一个 IDBManager 接口类,用于后续做依赖注入用,代码定义如下: 接下来定义 DBManager 类并实现接口 IDBManager ,代码定义如下: 接下来可以在 值得注意的是 Lamar 拥有强大的 接下来就可以在 Controller 中通过依赖注入的方式获取 DBManager 实例啦,实现代码如下: ASP.Net Core 自带的依赖注入容器放在 IOC 圈子里来说那真是太弱了,太需要第三方来扩充了, Lamar 就是这样一款非常优秀的 IOC 容器,也是 StructureMap 非常好的替代品。 译文链接:https://www.infoworld.com/article/3339698/how-to-use-lamar-in-aspnet-core.html 如何在 ASP.Net Core 中使用 Lamar 标签:测试 byte create uil 单元测试 scan 之间 mic ogr 原文地址:https://www.cnblogs.com/ireadme/p/14514060.html开箱即用
的依赖注入容器,实际上,你还可以使用第三方的 依赖注入容器
来替代它,依赖注入是一种设计模式,它能够有效的实现对象之间的解耦并有利于提高单元测试和维护性,你可以使用 依赖注入
来改进你的代码设计,而不像原来那样到处都是 new 对象。为什么要用 Lamar 实现依赖注入
StructureMap
,但 StructureMap
最大的缺点就是性能问题,而本篇的 Lamar 则非常轻量级,并提供了丰富的可供调用API,Lamar 和 StructureMap 非常类似,如果你以前 StructureMap 玩的溜的话,切到 Lamar 上是非常容易的。安装 Lamar
Manage NuGet Packages
。
Install-Package Lamar
Install-Package Lamar.Microsoft.DependencyInjection
创建 IDBManager 和 DBManager
public interface IDBManager
{
void Initialize();
bool Save
public class DBManager: IDBManager
{
public void Initialize()
{
//Write some initialization code here
}
public bool Save
配置 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
配置 Lamar 容器
ConfigureServices()
方法中配置 Container 容器,代码如下:
public void ConfigureServices(IServiceCollection services)
{
var container = new Container(x =>
{
x.AddTransient
自动装配
能力,它可以搜索请求类型和所需类型的构造函数,并构建其需要的实例,下面的代码展示了如何通过 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
Controller 中注入 DBManager 实例
public class HomeController : Controller
{
private readonly ILogger
更多精彩,欢迎订阅 ??????
上一篇:php5.*与php7.* 区别
下一篇:HTML-文本标签