बिल्ट-इन 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));
}
}