您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Lamar怎么在ASP.Net Core項目中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
要說 .NET 世界最早的依賴注入容器,當屬 StructureMap,但 StructureMap 最大的缺點就是性能問題,而本篇的 Lamar 則非常輕量級,并提供了豐富的可供調用API,Lamar 和 StructureMap 非常類似,如果你以前 StructureMap 玩的溜的話,切到 Lamar 上是非常容易的。
要想在 ASP.Net Core 中使用 Lamar,需要通過 nuget 安裝如下兩個包。
Lamar
Lamar.Microsoft.DependencyInjection
你可以通過可視化界面 Manage NuGet Packages。
或者如下命令進行安裝。
Install-Package Lamar Install-Package Lamar.Microsoft.DependencyInjection
首先創建一個 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.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>(); }); }
接下來可以在 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 實例啦,實現代碼如下:
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項目中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。