亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

门头沟区| 大名县| 若羌县| 台北县| 民丰县| 仁布县| 孝感市| 溧水县| 米易县| 石楼县| 许昌市| 高雄市| 利津县| 宁蒗| 安丘市| 大足县| 收藏| 汤阴县| 台江县| 民勤县| 南皮县| 瓦房店市| 嵊州市| 建宁县| 利川市| 古浪县| 阿克苏市| 都兰县| 波密县| 上思县| 越西县| 新龙县| 巫山县| 通州市| 忻州市| 册亨县| 盱眙县| 策勒县| 闸北区| 奎屯市| 漠河县|