5

मैं एक कंसोल .NET कोर अनुप्रयोग बना रहा हूं। यह समय-समय पर एक विधि चलाता है जो कुछ काम करता है। मैं सेवा प्रदाता को एएसपी.NET कोर ऐप्स में व्यवहार करने के तरीके में कैसे व्यवहार करता हूं। मैं स्कोप्ड सेवाओं को हल करना चाहता हूं जब विधि इसे निष्पादन शुरू करे और विधि के अंत में हल की गई सेवाओं का निपटान करें।.NET कोर में डिफ़ॉल्ट निर्भरता इंजेक्शन के साथ अभिभावक से बाल स्कोप कैसे बनाएं?

// pseudocode 

globalProvider.AddScoped<ExampleService>(); 

// ... 

using (var scopedProvider = globalProvider.CreateChildScope()) 
{ 
    var exampleService = scopedProvider.Resolve<ExampleService>(); 
} 

उत्तर

6

संदर्भ Microsoft.Extensions.DependencyInjection पैकेज और बनाने के स्कोप:

var services = new ServiceCollection(); 
services.AddScoped<ExampleService>(); 
var globalProvider = services.BuildServiceProvider(); 

using (var scope = globalProvider.CreateScope()) 
{ 
    var localScoped = scope.ServiceProvider.GetService<ExampleService>(); 

    var globalScoped = globalProvider.GetService<ExampleService>(); 
} 

आप आसानी से यह रूप में अच्छी तरह का परीक्षण कर सकते हैं:

using (var scope = globalProvider.CreateScope()) 
{ 
    var localScopedV1 = scope.ServiceProvider.GetService<ExampleService>(); 
    var localScopedV2 = scope.ServiceProvider.GetService<ExampleService>(); 
    Assert.Equal(localScopedV1, localScopedV2); 

    var globalScoped = globalProvider.GetService<ExampleService>(); 
    Assert.NotEqual(localScopedV1, globalScoped); 
    Assert.NotEqual(localScopedV2, globalScoped); 
} 

प्रलेखन: Service Lifetimes and Registration Options

+0

मैं वास्तव में अपने छद्म कोड के साथ जवाब के करीब था। धन्यवाद! – x2bool

संबंधित मुद्दे