91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-03-12 17:04:11 來源:億速云 閱讀:188 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關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-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項目中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无锡市| 梨树县| 茂名市| 嘉峪关市| 淅川县| 弥勒县| 遂宁市| 宁阳县| 金湖县| 临洮县| 莱州市| 宁安市| 佛学| 高青县| 德钦县| 宁海县| 田林县| 济南市| 独山县| 托克逊县| 义马市| 华亭县| 皋兰县| 香河县| 房产| 怀柔区| 巧家县| 北碚区| 禹城市| 饶河县| 邢台县| 怀集县| 罗源县| 图们市| 镇坪县| 桦南县| 甘德县| 开封市| 洱源县| 神池县| 全南县|