Mobile App Development .NET MAUI এ Built-in Dependency Injection ব্যবহার গাইড ও নোট

386

Dependency Injection (DI) হল একটি ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনের কম্পোনেন্টগুলির মধ্যে ডিপেনডেন্সি বা নির্ভরতা পরিচালনার জন্য ব্যবহৃত হয়। .NET MAUI এ Built-in Dependency Injection ব্যবহার করে অ্যাপ্লিকেশনগুলির মধ্যে সার্ভিস এবং ডিপেনডেন্সি খুব সহজে ইনজেক্ট করা যায়।

.NET MAUI এ DI ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন সার্ভিস এবং ডিপেনডেন্সি গুলি নিবন্ধিত (register) করতে পারেন এবং সেগুলি ক্লাসে ইনজেক্ট (inject) করতে পারেন, যাতে অ্যাপ্লিকেশন কোড পরিষ্কার, ম্যানেজেবল এবং টেস্টেবল হয়।

DI এর উপকারিতা:

  1. কম্পোনেন্টগুলির মধ্যে সম্পর্ক সহজভাবে প্রতিষ্ঠিত হয়।
  2. অ্যাপ্লিকেশন কোড আরও মডুলার এবং পরীক্ষাযোগ্য (testable) হয়।
  3. সার্ভিসের লাইফটাইম এবং স্কোপ পরিচালনা করা সহজ হয়।

.NET MAUI তে Built-in Dependency Injection ব্যবহার করার পদক্ষেপ:


১. ডিপেনডেন্সি ইনজেকশন কনফিগারেশন

প্রথমে, App.xaml.cs বা App.cs ফাইলে ডিপেনডেন্সি ইনজেকশন কনফিগার করতে হবে। এখানে, ConfigureServices মেথড ব্যবহার করে অ্যাপ্লিকেশনের জন্য সার্ভিস রেজিস্ট্রেশন করা হয়।

App.xaml.cs:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;
using MauiApp1.Services;

namespace MauiApp1
{
    public partial class App : Application
    {
        public App(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            // Initialize main page with DI
            MainPage = serviceProvider.GetRequiredService<MainPage>();
        }

        // Register services and dependency injection
        protected override void OnStart()
        {
            var services = new ServiceCollection();

            // Register services for DI
            services.AddSingleton<MainPage>();
            services.AddSingleton<IDataService, DataService>();

            // Build the service provider
            var serviceProvider = services.BuildServiceProvider();

            // Set the AppShell as the main page
            MainPage = serviceProvider.GetRequiredService<MainPage>();
        }
    }
}

এখানে:

  • ServiceCollection ব্যবহৃত হয়েছে সার্ভিস রেজিস্ট্রেশন করার জন্য।
  • AddSingleton ব্যবহার করা হয়েছে MainPage এবং IDataService সার্ভিস রেজিস্টার করার জন্য, যাতে একক ইনস্ট্যান্সের মাধ্যমে সার্ভিসটি অ্যাপ্লিকেশনে ব্যবহার করা যায়।
  • BuildServiceProvider ব্যবহার করে সার্ভিস প্রোভাইডার তৈরি করা হয়েছে।

২. সার্ভিস তৈরি করা

এখন, আপনি যে সার্ভিসটি ইনজেক্ট করতে চান তা তৈরি করতে হবে। নিচে একটি উদাহরণ হিসেবে IDataService এবং তার DataService ইমপ্লিমেন্টেশন দেওয়া হল।

IDataService Interface:

public interface IDataService
{
    string GetData();
}

DataService Class:

public class DataService : IDataService
{
    public string GetData()
    {
        return "Hello from the Data Service!";
    }
}

এখানে:

  • IDataService একটি ইন্টারফেস যেটি ডেটা প্রদান করার জন্য একটি GetData মেথড সংজ্ঞায়িত করে।
  • DataService এ ইন্টারফেসটির বাস্তবায়ন (implementation) দেওয়া হয়েছে, যেখানে ডেটা ফেরত দেয়।

৩. Dependency Injection ব্যবহার করা

এখন, আপনার MainPage.xaml.cs বা যেকোনো পেজে আপনি IDataService সার্ভিসটি ইনজেক্ট করতে পারবেন।

MainPage.xaml.cs:

using MauiApp1.Services;

namespace MauiApp1
{
    public partial class MainPage : ContentPage
    {
        private readonly IDataService _dataService;

        public MainPage(IDataService dataService)
        {
            InitializeComponent();
            _dataService = dataService;

            // Use the injected service to get data
            DataLabel.Text = _dataService.GetData();
        }
    }
}

এখানে:

  • IDataService ইনজেক্ট করা হয়েছে কনস্ট্রাকটরের মাধ্যমে।
  • _dataService.GetData() ব্যবহার করে সার্ভিসের ডেটা আনা হয়েছে এবং DataLabel এ সেট করা হয়েছে।

৪. MainPage.xaml ফাইলের তৈরি করা

এখন, MainPage.xaml ফাইলে একটি লেবেল তৈরি করা হয়েছে যেখানে ডেটা প্রদর্শিত হবে।

MainPage.xaml:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="MauiApp1.MainPage">

    <StackLayout Padding="20">
        <Label x:Name="DataLabel" FontSize="24" />
    </StackLayout>
</ContentPage>

এখানে:

  • DataLabel হল একটি Label যেখানে সার্ভিস থেকে পাওয়া ডেটা দেখানো হবে।

৫. App.xaml.cs (Complete Example)

এখন, সবকিছু একসাথে সাজানো হল।

App.xaml.cs:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Maui.Controls;
using MauiApp1.Services;

namespace MauiApp1
{
    public partial class App : Application
    {
        public App(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            // Initialize main page with DI
            MainPage = serviceProvider.GetRequiredService<MainPage>();
        }

        // Register services and dependency injection
        protected override void OnStart()
        {
            var services = new ServiceCollection();

            // Register services for DI
            services.AddSingleton<MainPage>();
            services.AddSingleton<IDataService, DataService>();

            // Build the service provider
            var serviceProvider = services.BuildServiceProvider();

            // Set the AppShell as the main page
            MainPage = serviceProvider.GetRequiredService<MainPage>();
        }
    }
}

এখানে:

  • MainPage এবং IDataService ইনজেক্ট করা হয়েছে।
  • OnStart() মেথডে ডিপেনডেন্সি রেজিস্টার করা হয়েছে এবং সার্ভিস প্রোভাইডার তৈরি করা হয়েছে।

সারাংশ:

  • Dependency Injection (DI) এর মাধ্যমে .NET MAUI অ্যাপ্লিকেশনের মধ্যে সার্ভিস এবং ডিপেনডেন্সি খুব সহজে ইনজেক্ট করা যায়।
  • ServiceCollection ব্যবহার করে সার্ভিস রেজিস্টার করা হয় এবং তারপর ServiceProvider থেকে সার্ভিস ইনজেক্ট করা হয়।
  • AddSingleton ব্যবহৃত হয় যাতে সার্ভিসের একক (singleton) ইনস্ট্যান্স অ্যাপ্লিকেশন জুড়ে শেয়ার করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...