Код: Выделить всё
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);
}
}
Код: Выделить всё
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();
Console.WriteLine($"messageWriter1 == messageWriter2: {messageWriter1 == messageWriter2}");
messageWriter1.Write("Hello DI!");
}
Console.Write("THE END");
Код: Выделить всё
messageWriter1 == messageWriter2: True
Hello DI!
The ConsoleMessageWriter instanse is disposed.
The ConsoleMessageWriter instanse is disposed.
THE END
Подробнее здесь: https://stackoverflow.com/questions/784 ... vice-twice