অন্তর্নির্মিত IoC কন্টেইনার একটি নিবন্ধিত পরিষেবার প্রকারের জীবনকাল পরিচালনা করে। নির্দিষ্ট জীবনকালের উপর ভিত্তি করে এটি স্বয়ংক্রিয়ভাবে একটি পরিষেবার উদাহরণ নিষ্পত্তি করে৷
অন্তর্নির্মিত IoC কন্টেইনার তিন ধরনের জীবনকাল সমর্থন করে −
সিঙ্গলটন − IoC কন্টেইনার অ্যাপ্লিকেশনটির সারাজীবন জুড়ে একটি পরিষেবার একক দৃষ্টান্ত তৈরি এবং ভাগ করবে৷
ক্ষণস্থায়ী − IoC কন্টেইনার প্রতিবার আপনি যখন এটি চাইবেন নির্দিষ্ট পরিষেবার প্রকারের একটি নতুন উদাহরণ তৈরি করবে৷
স্কোপড − IoC কন্টেইনার প্রতি অনুরোধে একবার নির্দিষ্ট পরিষেবার প্রকারের একটি উদাহরণ তৈরি করবে এবং একটি একক অনুরোধে শেয়ার করা হবে৷
উদাহরণ
public interface ILog{ void info(string str); } class MyConsoleLogger : ILog{ public void info(string str){ Console.WriteLine(str); } }
public class Startup{ public void ConfigureServices(IServiceCollection services){ services.Add(new ServiceDescriptor(typeof(ILog), new MyConsoleLogger())); // singleton services.Add(new ServiceDescriptor(typeof(ILog), typeof(MyConsoleLogger), ServiceLifetime.Transient)); // Transient services.Add(new ServiceDescriptor(typeof(ILog), typeof(MyConsoleLogger), ServiceLifetime.Scoped)); // Scoped } }
নিম্নলিখিত উদাহরণটি এক্সটেনশন পদ্ধতি ব্যবহার করে প্রকার (পরিষেবা) নিবন্ধন করার উপায়গুলি দেখায়৷
public class Startup{ public void ConfigureServices(IServiceCollection services){ services.AddSingleton<ILog, MyConsoleLogger>(); services.AddSingleton(typeof(ILog), typeof(MyConsoleLogger)); services.AddTransient<ILog, MyConsoleLogger>(); services.AddTransient(typeof(ILog), typeof(MyConsoleLogger)); services.AddScoped<ILog, MyConsoleLogger>(); services.AddScoped(typeof(ILog), typeof(MyConsoleLogger)); } }