primary constructor چیست؟

👈 در معرفی دات نت 8 و سیشارپ 12 یک روش جدید و تمیز تر برای مقدار دهی در کانستراکتور کلاس معرفی شد به نام Primary Constructor


👁 بازدید : 36

1403/6/2 | 7:52 : تاریخ 📆


Primary Constructor چیست؟

در معرفی دات نت 8 و سیشارپ 12 یک روش جدید و تمیز تر برای مقدار دهی در کانستراکتور کلاس معرفی شد به نام Primary Constructor

عموما ما برای اینجکت کردن نیازمندی های کلاسمون(شما بخونید سرویس هامون) که ممکن بود تعداشونم زیاد باشه مجبور بودیم کلی خط کد بنویسیم و حجم کدمون در کانستراکتور به شدت بالا میرفت و قابلیت خوانا بودن کلاس کمتر میشد.

بزارید تو یک مثال ساده با Primary Constructor  آشنا بشیم:

public sealed class NewsService
{
    private readonly INewsRepository _newsRepository;

    public NewsService(INewsRepository newsRepository)
    {
        _newsRepository= newsRepository;
    }

    public void Subscribe(string email)
    {
        _newsRepository.Add(email);
    }
}

روش قدیمی اینطور بود که از کانستراکتور اینجکشن استفاده میکردیم برای رفع نیاز کلاس، اما فرض کنید شما در ASP.Net دارید کد میزنید و در کنترلر چندین endpoint و یا action دارید و برای هر کدوم نیاز به سرویس های مختلف هست. در این صورت باید تعداد زیادی سرویس رو داخل کلاستون اینجکت کنید و اینجاست که خوانایی از بین میره!

public sealed class NewsService(INewsRepository newsRepository)
{

    public void Subscribe(string email)
    {
        newsRepository.Add(email);
    }
}

حالا در روش جدید ما نیازی به کانستراکتور اینجکشن نداریم تا نیازمندی کلاس رو تامین کنیم، فقط کافیه جلوی نام کلاسمون و داخل پرانتز نیازمندی کلاسمون رو معرفی کنیم و تمام!.... زیبا نیست!!

  

Primary Constructor چیست؟

در معرفی دات نت 8 و سیشارپ 12 یک روش جدید و تمیز تر برای مقدار دهی در کانستراکتور کلاس معرفی شد به نام Primary Constructor

عموما ما برای اینجکت کردن نیازمندی های کلاسمون(شما بخونید سرویس هامون) که ممکن بود تعداشونم زیاد باشه مجبور بودیم کلی خط کد بنویسیم و حجم کدمون در کانستراکتور به شدت بالا میرفت و قابلیت خوانا بودن کلاس کمتر میشد.

بزارید تو یک مثال ساده با Primary Constructor  آشنا بشیم:

public sealed class NewsService
{
    private readonly INewsRepository _newsRepository;

    public NewsService(INewsRepository newsRepository)
    {
        _newsRepository= newsRepository;
    }

    public void Subscribe(string email)
    {
        _newsRepository.Add(email);
    }
}

روش قدیمی اینطور بود که از کانستراکتور اینجکشن استفاده میکردیم برای رفع نیاز کلاس، اما فرض کنید شما در ASP.Net دارید کد میزنید و در کنترلر چندین endpoint و یا action دارید و برای هر کدوم نیاز به سرویس های مختلف هست. در این صورت باید تعداد زیادی سرویس رو داخل کلاستون اینجکت کنید و اینجاست که خوانایی از بین میره!

public sealed class NewsService(INewsRepository newsRepository)
{

    public void Subscribe(string email)
    {
        newsRepository.Add(email);
    }
}

حالا در روش جدید ما نیازی به کانستراکتور اینجکشن نداریم تا نیازمندی کلاس رو تامین کنیم، فقط کافیه جلوی نام کلاسمون و داخل پرانتز نیازمندی کلاسمون رو معرفی کنیم و تمام!.... زیبا نیست!!

  

تمامی‌حقوق‌مادی‌ومعنوی‌این‌سایت‌برای‌یادمیگیریم‌محفوظ است.