Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เราจะฉีดการพึ่งพาบริการลงในคอนโทรลเลอร์ C # Asp.net Core ได้อย่างไร


ASP.NET Core ฉีดวัตถุของคลาสการพึ่งพาผ่านตัวสร้างหรือเมธอดโดยใช้คอนเทนเนอร์ IoC ในตัว

คอนเทนเนอร์ในตัวแสดงโดยการใช้งาน IServiceProvider ที่รองรับการฉีดคอนสตรัคเตอร์ตามค่าเริ่มต้น ประเภท (คลาส) ที่จัดการโดย IoCcontainer ในตัวเรียกว่าบริการ

เพื่อให้คอนเทนเนอร์ IoC ฉีดบริการแอปพลิเคชันของเราโดยอัตโนมัติ อันดับแรก เราต้องลงทะเบียนกับคอนเทนเนอร์ IoC

ตัวอย่าง

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}

ASP.NET Core ช่วยให้เราสามารถลงทะเบียนบริการแอปพลิเคชันของเรากับคอนเทนเนอร์ IoC ในวิธี ConfigureServices ของคลาส Startup เมธอด ConfigureServices ประกอบด้วยพารามิเตอร์ประเภท IServiceCollection ซึ่งใช้ในการลงทะเบียน applicationservices

ลงทะเบียน ILog ด้วยคอนเทนเนอร์ IoC ในวิธี ConfigureServices() ดังที่แสดงด้านล่าง

public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.AddSingleton<ILog, MyConsoleLogger>();
   }
}

เมธอด Add() ของอินสแตนซ์ IServiceCollection ใช้เพื่อลงทะเบียนบริการกับ IoCcontainer

เราได้ระบุ ILog เป็นประเภทบริการและ MyConsoleLogger เป็นอินสแตนซ์ ซึ่งจะลงทะเบียนบริการ ILog เป็น singletonNow คอนเทนเนอร์ IoC จะสร้างวัตถุซิงเกิลตันของคลาส MyConsoleLogger และฉีดเข้าไปในตัวสร้างของคลาสทุกที่ที่เรารวม ILog เป็นพารามิเตอร์ตัวสร้างหรือเมธอดตลอดทั้งแอปพลิเคชัน .