DEV Community 👩‍💻👨‍💻

MustafaSamedYeyin
MustafaSamedYeyin

Posted on

Asp.net Core configuration options pattern Giriş.

Options pattern nedir ?

Options pattern configurasyonlara class'lar aracılığıyla erişmemizi sağlayan bir bir .net core özelliğidir.

Options pattern nasıl kullanılır ?

Aşağıda linkten projei indirin :

Proje

Öncelikle projeye default bir mvc projesi açtım ve sırasıyla şu dosyaları değiştirdim veya yaratım :

1.) "appsettings.json"a MustafaConfiguration adlı configuration'ları ekledim :

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "MustafaConfiguration": {
    "Soyad": "YEYIN",
    "Yas": "24"
  }
}

Enter fullscreen mode Exit fullscreen mode

2.) MustafaConfiguration adlı class 'ı yarattım :

 public class MustafaConfiguration
    {
        public string Soyad { get; set; }
        public string Yas { get; set; }
    }
Enter fullscreen mode Exit fullscreen mode

3.) "Startup.cs"de IOptions pattern'i configure ettim :

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<MustafaConfiguration>(Configuration.GetSection("MustafaConfiguration"));
            services.AddControllersWithViews();
        }
.
.
.
Enter fullscreen mode Exit fullscreen mode

4.) "HomeController"da IOptionsPattern'i di(dependecy injection) olarak geçtim:

public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly MustafaConfiguration _mustafaConfiguration;
        public HomeController(ILogger<HomeController> logger, IOptions<MustafaConfiguration> mustafaConfiguration)
        {
            _logger = logger;
            _mustafaConfiguration = mustafaConfiguration.Value;
        }
.
.
.
Enter fullscreen mode Exit fullscreen mode

Dah sonra MustafaConfiguration adlı class'a atanan değeleri aşağıdaki gibi ViewBag'e Soyad ve Yas olarak geçtim.

  public IActionResult Index()
        {
            ViewBag.Soyad = _mustafaConfiguration.Soyad;
            ViewBag.Yas = _mustafaConfiguration.Yas;
            return View();
        }
Enter fullscreen mode Exit fullscreen mode

5.) Index.cshtml'e sadece ViewBag'leri ekledim aşağıki gibi :

@{
    ViewData["Title"] = "Home Page";
}

@ViewBag.Soyad
@ViewBag.Yas

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
Enter fullscreen mode Exit fullscreen mode

Sonuç : appsettings.json'daki MustafaConfiguration'ının Soyad ve Yas bilgilerini böylece ulaşabildim. Aşağıdaki resimdeki gibi :

alt text

Yani IOptions pattern ile configuration dosyası olan appsettings.json dan, bir class olan MustafaConfiguration adlı class'a değer geçirebilip(Soyad ve yas bilgilerini geçirdik), daha sonra ViewBag'lere bu bilgileri atayıp Index.cshtml dosyasından göstermiş olduk.

Bir dahaki yazıda görüşmek üzere.

En iyi dileklerim ile.

Mustafa Samed Yeyin.

Top comments (0)

Take a look at this:

Settings

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. 🛠