Suntikan ketergantungan dalam C# dijelaskan

王林
Lepaskan: 2023-08-26 16:05:18
ke hadapan
1550 orang telah melayarinya

Suntikan ketergantungan dalam C# dijelaskan

Kebergantungan ialah objek yang bergantung kepada objek lain. Suntikan ketergantungan (atau penyongsangan) pada asasnya menyediakan objek dengan objek yang diperlukan dan bukannya membiarkannya membina objek itu sendiri. Ini ialah teknik berguna yang menjadikan ujian lebih mudah kerana ia membolehkan anda mengejek kebergantungan.

Sebagai contoh, jika kelas A memanggil kaedah pada kelas B, dan kelas B memanggil kaedah pada kelas C, ini bermakna A bergantung kepada B dan B bergantung kepada C. Menggunakan suntikan kebergantungan, kita boleh menghantar contoh kelas C ke kelas B, dan contoh B ke kelas A, bukannya meminta kelas ini membina tika B dan C.

Dalam contoh di bawah, Runner kelas bergantung pada Logger Kelas . Ambil perhatian bahawa contoh Logger dicipta dalam pembina kelas Runner. Terdapat beberapa masalah dengan kod ini.

  • Ini mengikat kelas logger dengan Runner, kita tidak boleh menggantikannya dengan kelas lain, Tidak perlu mengubah suai Runner.

  • Jika Logger mempunyai sebarang kebergantungan, maka Pekerja mesti mengkonfigurasinya terlebih dahulu Segerakan Logger.

  • Ujian itu lebih sukar. Jika Logger ialah kelas intensif sumber, seperti akses rangkaian atau sistem fail, ia boleh melambatkan ujian. Kita tidak boleh menggantikannya dengan mudah.

using System;
class Program{
   static void Main(string[] args){
      var runner = new Runner();
      runner.Run();
   }
}
class Runner{
   private Logger _logger;
   public Runner(){
      _logger = new Logger();
   }
   public void Run(){
      // Do some work
      _logger.Log("Message to be logged");
   }
}
class Logger{
   public void Log(string message){
      Console.WriteLine(message);
   }
}
Salin selepas log masuk

Menggunakan suntikan kebergantungan, kami mengubah suai pembina Runner untuk menerima antara muka ILogger dan bukannya objek konkrit. Kami menukar kelas Logger untuk melaksanakan ILogger. Ini membolehkan kita menghantar contoh kelas Logger kepada pembina Runner. Kelebihan ini ialah semasa ujian kita boleh mencipta kelas TestLogger yang melaksanakan ILogger dan menyerahkannya kepada pembina Runner.

Contoh

Demonstrasi masa nyata

using System;
class Program{
   static void Main(string[] args){
      var logger = new Logger();
      var runner = new Runner(logger);
      runner.Run();
   }
}
class Runner{
   private ILogger _logger;
   public Runner(ILogger logger){
      _logger = logger;
   }
   public void Run(){
      // Do some work
      _logger.Log("Message to be logged");
   }
}
interface ILogger{
   void Log(string message);
}
class Logger : ILogger{
   public void Log(string message){
      Console.WriteLine(message);
   }
}
Salin selepas log masuk

Output

Message to be logged
Salin selepas log masuk

Atas ialah kandungan terperinci Suntikan ketergantungan dalam C# dijelaskan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!