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

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

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

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

安装 Lamar

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

  • Lamar

  • Lamar.Microsoft.DependencyInjection

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

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

或者如下命令进行安装。

Install-PackageLamar
Install-PackageLamar.Microsoft.DependencyInjection

创建 IDBManager 和 DBManager

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

publicinterfaceIDBManager
{
voidInitialize();
boolSave<T>(Tobj);
}

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

publicclassDBManager:IDBManager
{
publicvoidInitialize()
{
//Writesomeinitializationcodehere
}
publicboolSave<T>(Tobj)
{
//Writeyourcodehere
returntrue;
}
}

配置 Lamar

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

publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CreateHostBuilder(args).UseLamar().Build().Run();
}

publicstaticIHostBuilderCreateHostBuilder(string[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup<Startup>();
});
}

配置 Lamar 容器

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

publicvoidConfigureServices(IServiceCollectionservices)
{
varcontainer=newContainer(x=>
{
x.AddTransient<IDBManager,DBManager>();
});

services.AddControllersWithViews();
}

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

publicclassStartup
{
//Thismethodgetscalledbytheruntime.Usethismethodtoaddservicestothecontainer.
publicvoidConfigureServices(IServiceCollectionservices)
{
varcontainer=newContainer(x=>
{
x.AddTransient<IDBManager,DBManager>();
});

services.AddControllersWithViews();
}

publicvoidConfigureContainer(ServiceRegistryservices)
{
services.Scan(s=>
{
s.TheCallingAssembly();
s.WithDefaultConventions();
});
}
}

Controller 中注入 DBManager 实例

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

publicclassHomeController:Controller
{
privatereadonlyILogger<HomeController>_logger;
privateIDBManager_dbManager;

publicHomeController(ILogger<HomeController>logger,IDBManagerdbManager)
{
_logger=logger;
_dbManager=dbManager;
}

publicIActionResultIndex()
{
returnView();
}
}

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

发布于 2021-03-13 15:41:12
收藏
分享
海报
0 条评论
171
上一篇:Python中有哪些常见的加密操作 下一篇:怎么在python中将docx与doc文件进行转换
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码