Услуга: [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] Почему служба с заданной областью была удалена дважды? Как это исправить? Мне нужно удалить службу один раз.
Услуга:
public interface IMessageWriter
{
void Write(string message);
}
public class ConsoleMessageWriter:IMessageWriter, IDisposable
{
public void Dispose()
{
Console.WriteLine($ The {GetType().Name} instanse is disposed. );
}
Если у меня есть служба, которая хранит токен как ленивый объект, и токен извлекается внутри фабрики значений, сохраняется ли это значение при нескольких запросах, или поскольку базовая служба ограничена областью действия, ленивый запуск начинается...
Моя цель — опубликовать сообщение аудита на RabbitMQ, чтобы его мог использовать другой сервис. Я фиксирую аудит внутри класса DbContext, переопределяя метод SaveChangesAsync. Моей первой мыслью было предоставить IPublishEndpoint посредством...
Моя цель — опубликовать сообщение аудита на RabbitMQ, чтобы его мог использовать другой сервис. Я фиксирую аудит внутри класса DbContext, переопределяя метод SaveChangesAsync. Моей первой мыслью было предоставить IPublishEndpoint посредством...
Моя цель — опубликовать сообщение аудита на RabbitMQ, чтобы его мог использовать другой сервис. Я фиксирую аудит внутри класса DbContext, переопределяя метод SaveChangesAsync. Моей первой мыслью было предоставить IPublishEndpoint посредством...