IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Microsoft.Extensions.DependencyInjection .NET 9 (PDF ile Çalışma)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

Microsoft.Extensions.DependencyInjection, Microsoft .NET tarafından sağlanan güçlü bir kütüphanedir ve uygulamalarda zayıf bağlılığı teşvik eden ve test edilebilirliği artıran bir yazılım tasarım deseni olan Bağımlılık Enjeksiyonu'nu (DI) kolaylaştırır. DI genellikle .NET Core yerleşik DI konteynırı veya Autofac ve Unity gibi kütüphaneler kullanılarak uygulanır. DI, bir sınıfın ihtiyaç duyduğu bağımlılıkları (nesneler) sınıfa enjekte etmeyi, sınıfın kendi bağımlılıklarını oluşturmaktan ziyade içerir. Bu genellikle bir yapıcı, yöntem veya özellik enjeksiyonu ile yapılır.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF ile Çalışma): Şekil 1 - Microsoft.Extensions.DependencyInjectionName dokümantasyonu

Bağımlılık Enjeksiyon Konteynırı

  1. Hizmet Kaydı: Bağımlılıklar, genellikle uygulamanın kompozisyon köklerinde bir DI konteynırına kaydedilir. Bu kayıtlar, konteynırın bağımlılıkları nasıl oluşturması ve yönetmesi gerektiğini belirtir.

  2. Bağımlılık Çözümü: Bir bileşen bir bağımlılık talep ettiğinde, DI konteynırı bağımlılığı, bir uzatma yöntemi kullanan bir kayıtlı tipin örneğini oluşturarak çözer.

Bağımlılık Enjeksiyon Türleri

  • Yapıcı Enjeksiyonu: Kayıtlı hizmetler, en yaygın ve önerilen DI biçimi olan yapıcısı aracılığıyla bir sınıfa sağlanır.
  • Yöntem Enjeksiyonu: Hizmetler, bir yönteme parametreler olarak çözülür ve geçirilir.
  • Özellik Enjeksiyonu: Tekil hizmetler veya ömürlü hizmetler sınıf özelliklerine atanabilir. Ancak, bu yaklaşım daha az yaygındır ve genellikle yapıcı enjeksiyonuna göre daha düşük nitelikli kabul edilir çünkü gizli bağımlılıklar yaratabilir.

Bağımlılık Enjeksiyonunda Ömürleri Anlama: Scoped, Geçici ve Tekil

  1. Scoped: Scoped bağımlılıklar, talep başına veya ömür kapsamına göre bir kez oluşturulur, yani konteynır, tek bir talep veya işlem sırasında aynı örneği elde eder. Bu tutarlılık, web uygulamalarında özellikle yararlıdır; scoped bağımlılıklar, web talebi boyunca istikrarlı bir bağımlılık sağlamaya yardımcı olur.
  2. Geçici: Geçici bağımlılıklar, konteynırdan her talep edildiğinde başlatılır. Bu, geçici bir bağımlılığın, her ihtiyaç duyulduğunda yeni bir örneğinin oluşturulacağı anlamına gelir. Genellikle, geçici bağımlılıklar hafif, durumsuz hizmet veya bileşenler için kullanılır.
  3. Tekil: Tekil bağımlılıklar yalnızca bir kere başlatılır ve tüm uygulamanın ömrü boyunca paylaşılır. Bu, uygulamanın ömrü boyunca tüm talepler için tekil bağımlılığın aynı örneği kullanılmasını sağlar. Tekil bağımlılıklar genellikle uygulamanın tamamına genel olarak erişilebilir olması gereken durumlu hizmet veya bileşenler için kullanılır.

Kurulum Microsoft.Extensions.DependencyInjection paketi

Bir .NET Core projesinde bağımlılık enjeksiyonunu kullanmaya başlamak için öncelikle Microsoft.Extensions.DependencyInjection paketini yüklemeniz gerekir. Bu işlem, Visual Studio'daki NuGet Paket Yöneticisi Konsolu üzerinden aşağıdaki komut ile yapılabilir.

PM > Install-Package Microsoft.Extensions.DependencyInjection

Ekran Görüntüsü

Microsoft.Extensions.DependencyInjection .NET 6 (PDF ile Çalışma): Şekil 2 - Paketi yüklemek için terminale komutu yazın

Örnek: Temel Bağımlılık Enjeksiyonu

Bu örnekte, hizmet sağlayıcısını çözümlemek için hizmet sağlayıcısını kullanacağımız bir örnek uygulama (konsol uygulaması) oluşturalım.

using Microsoft.Extensions.DependencyInjection;
using System;

// Define a service interface
public interface IMessageService
{
    void SendMessage(string message);
}

// Implement the service interface
public class ConsoleMessageService : IMessageService
{
    public void SendMessage(string message)
    {
        Console.WriteLine(message); // Output the message to the console
    }
}

Kod parçası, mesaj göndermek için bir arayüz IMessageService oluşturur, mesajların nasıl gönderilmesi gerektiğine dair bir sözleşme gibi. Console.WriteLine kullanarak mesaj göndermek için bu arayüzü uygulayanConsoleMessageService sınıfı. Bu ayrım, mesaj gönderme konseptinin, nasıl gönderildiğinden bağımsız olarak değiştirilebilmesine olanak tanır, bu da sistemi esnek ve yönetilebilir hale getirir.

class Program
{
    static void Main(string[] args)
    {
        // Create a service provider
        var serviceProvider = new ServiceCollection()
            // Register the service implementation
            .AddTransient<IMessageService, ConsoleMessageService>()
            .BuildServiceProvider();

        // Resolve the service
        var messageService = serviceProvider.GetRequiredService<IMessageService>();

        // Use the service to send a message
        messageService.SendMessage("Hello, From Dependency Injection!");
    }
}

Bu kod, hizmetleri yönetmek için bir serviceProvider kurar. IMessageService için uygulama olarak ConsoleMessageService kaydederek gereklilik doğduğunda enjekte edilmesini sağlar. Main yöntemi, daha sonra serviceProvider'dan bir IMessageService örneği alır ve bunu konsola bir mesaj göndermek için kullanır.

Çıktı: Program "Hello, From Dependency Injection!" string mesajını yazdırır.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF ile Çalışma): Şekil 3 - Yukarıdaki koddan konsol çıktısı

IronPDF: C# PDF Kütüphanesi

IronPDF , PDF oluşturmanın karmaşık süreçlerini basitleştiren ve HTML'den PDF'ler oluşturma, PDF'lere metin ekleme ve resimlerle PDF'leri düzenleme, güvenli belgeler oluşturma ve daha birçok özellik sunan güçlü bir C# kütüphanesidir.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF ile Çalışma): Şekil 4 - Microsoft.Extensions.DependencyInjection C# Örneği (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF

Bağımlılık Enjeksiyonu ile IronPDF Kullanma

Microsoft.Extensions.DependencyInjection ile bağımlılık enjeksiyonu özelliklerinden ve uzantı yöntemlerinden yararlanarak IronPDF kütüphanesini bir .NET Core uygulamasına entegre etmek için şu adımları izleyebilirsiniz:

  1. PDF oluşturma hizmetinizi tanımlamak için bir arayüz oluşturun.
  2. Arayüzü uygulayın.
  3. Bağımlılık enjeksiyonu konteynırına hizmeti kaydetmek için uzantı yöntemlerini kullanın.
  4. Gereken yerlerde uygulamanıza hizmeti enjekte edin.

Arayüz Tanımlama

PDF oluşturma hizmetinizi tanımlayan bir arayüz oluşturun.

public interface IPdfService
{
    void GeneratePdf(string baseUrl, string query, string filePath);
}

Arayüz Uygulaması

PDF dosyası oluşturma işlemi için IronPDF kullanarak arayüzü uygulayın.

using IronPdf;
using System;
using System.Web;

// Implement the PDF generation interface
public class IronPdfService : IPdfService
{
    public void GeneratePdf(string baseUrl, string query, string filePath)
    {
        License.LicenseKey = "Your-License-Key"; // Set the IronPDF license key
        string encodedQuery = HttpUtility.UrlEncode(query); // Encode the query string
        string fullUrl = $"{baseUrl}?query={encodedQuery}"; // Construct the full URL
        var renderer = new ChromePdfRenderer(); // Create a PDF renderer
        var pdf = renderer.RenderUrlAsPdf(fullUrl); // Render the PDF from the URL
        pdf.SaveAs(filePath); // Save the PDF to the specified file path
        Console.WriteLine($"PDF successfully created from: {fullUrl}");
        Console.WriteLine($"Saved to: {filePath}");
    }
}

Hizmeti Kaydet

Program.cs sınıfınızda, bağımlılık enjeksiyonunu yapılandırın:

builder.Services.AddSingleton<IPdfService, IronPdfService>();

Bu yapılandırma, PDF oluşturma için IPdfService arayüzünü IronPdfService ile uygulayarak bağımlılıkları çözer ve PDF oluşturma için tekil bir hizmet türü kurar. Uygulama boyunca referans alınarak, PDF oluşturma işlemlerinde tutarlı bir işlevsellik sağlar.

Kullanım

IPdfService hizmetini kontrolcünüze veya hizmetinize enjekte edin ve kullanın:

public class MyController : Controller
{
    private readonly IPdfService _pdfService;
    
    public MyController(IPdfService pdfService)
    {
        _pdfService = pdfService;
    }
    
    public IActionResult GeneratePdf()
    {
        string baseUrl = "https://ironpdf.com/";
        string query = "Hello World from IronPDF !";
        string filePath = "Demo.pdf";
        
        // Use the injected PDF service to generate a PDF
        _pdfService.GeneratePdf(baseUrl, query, filePath);
        
        return View();
    }
}

Bu kurulum, IronPdfService'in Microsoft Sonat Şirketleri Bağımlılık Enjeksiyonu konteynırı tarafından oluşturulmasını ve yönetilmesini sağlar. IPdfService arayüzü için alternatif bir uygulama sunarak varsayılan PDF oluşturma hizmetini zahmetsizce değiştirebilirsiniz, bu da tüketici kodunu değiştirmeden yapabilirsiniz.

PDF Dosyasının Ekran Görüntüsü

Microsoft.Extensions.DependencyInjection .NET 6 (PDF ile Çalışma): Şekil 5 - Microsoft Extensions Dependency Injection kapsayıcısını IronPDF ile birlikte kullanarak örnek çıktı

Sonuç

Microsoft.Extensions.DependencyInjection, .NET 6'da bağımlılık enjeksiyonu uygulamak için güçlü bir araç olup, bu da uygulamalarda zayıf bağlılığı teşvik eder ve test edilebilirliği artırır. Zengin özelliklere sahip bir C# kütüphanesi olan IronPDF'yi entegre ederek, geliştiriciler kapsamlı PDF belgelerini minimum çaba ile kolayca oluşturabilir. IronPDF için lisanslama mevcuttur.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez