Услуга: [code] public interface IMessageWriter { void Write(string message); }
public class ConsoleMessageWriter:IMessageWriter, IDisposable { public void Dispose() { Console.WriteLine($"The {GetType().Name} instanse is disposed."); }
public void Write(string message) { Console.WriteLine(message); } } [/code] Теперь я использую его в области видимости: [code]using DI_Sandbox.Models; using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection(); services .AddScoped() .AddScoped(provider => provider.GetRequiredService());
var container = services.BuildServiceProvider(validateScopes:true); using (var serviceScope = container.CreateScope()) { var messageWriter1 = serviceScope.ServiceProvider.GetRequiredService(); var messageWriter2 = serviceScope.ServiceProvider.GetRequiredService();
messageWriter1.Write("Hello DI!"); } Console.Write("THE END"); [/code] Выход: [code]messageWriter1 == messageWriter2: True Hello DI! The ConsoleMessageWriter instanse is disposed. The ConsoleMessageWriter instanse is disposed. THE END [/code] Почему служба с заданной областью была удалена дважды? Как это исправить? Мне нужно удалить службу один раз.