অন্তর্নির্মিত 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));
}
}