নির্ভরতা ইনজেকশন একটি সোজাসাপ্টা ধারণার জন্য একটি ভয়াবহ নাম (আইএমও) 1 । এখানে একটি উদাহরণ:
- আপনার কাছে এমন একটি পদ্ধতি রয়েছে (বা পদ্ধতি সহ ক্লাস) যা এক্স করে (যেমন ডাটাবেস থেকে ডেটা পুনরুদ্ধার)
- এক্স করার অংশ হিসাবে, বলেছেন পদ্ধতিটি একটি অভ্যন্তরীণ সংস্থান তৈরি করে এবং পরিচালনা করে (উদাঃ ক
DbContext
)। এই অভ্যন্তরীণ সংস্থানটিকে নির্ভরতা বলা হয়
- আপনি
DbContext
পদ্ধতিটি থেকে উত্স তৈরি এবং পরিচালনা মুছে ফেলুন এবং এই সংস্থানটি সরবরাহ করার জন্য কলারের দায়বদ্ধ হন (একটি পদ্ধতি প্যারামিটার হিসাবে বা শ্রেণীর তাত্ক্ষণিক ভিত্তিতে)
- আপনি এখন নির্ভরতা ইনজেকশন করছেন।
[1] : আমি নিম্ন-স্তরের পটভূমি থেকে এসেছি এবং বসে থাকতে এবং নির্ভরতা ইনজেকশন শিখতে আমার কয়েক মাস লেগেছে কারণ নামটি বোঝায় যে এটি আরও জটিল কিছু হবে, যেমন ডিএলএল ইনজেকশন । সত্য যে ভিসুয়াল স্টুডিও (সাধারণ এবং আমরা ডেভেলপারদের) .NET লাইব্রেরি (ডিএলএল বা বোঝায় সমাহারগুলি ) একটি প্রকল্প উপর যেমন নির্ভর করে যে নির্ভরতা এ সব সাহায্য করে না। নির্ভরতা ওয়াকার (depend.exe) এর মতো একটি জিনিস রয়েছে ।
[সম্পাদনা] আমি অনুভব করেছি যে কিছু ডেমো কোড কারওর জন্য কার্যকর হবে, সুতরাং এখানে একটি (সি #)।
নির্ভরতা ইনজেকশন ছাড়াই:
public class Repository : IDisposable
{
protected DbContext Context { get; }
public Repository()
{
Context = new DbContext("name=MyEntities");
}
public void Dispose()
{
Context.Dispose();
}
}
আপনার গ্রাহকরা এর পরে এমন কিছু করবেন:
using ( var repository = new Repository() )
{
// work
}
নির্ভরতা ইঞ্জেকশন প্যাটার্ন সহ একই শ্রেণি প্রয়োগ করা হবে:
public class RepositoryWithDI
{
protected DbContext Context { get; }
public RepositoryWithDI(DbContext context)
{
Context = context;
}
}
এটিকে এখন আপনার ক্লাসে এটিকে DbContext
পাস এবং পাস (অরার্ম, ইনজেকশন ) দেওয়ার জন্য কলারের দায়বদ্ধতা :
using ( var context = new DbContext("name=MyEntities") )
{
var repository = new RepositoryWithDI(context);
// work
}