Код: Выделить всё
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddTransient();
builder.Services.AddTransient();
var app = builder.Build();
var hooks = app.Services.GetServices();
Console.WriteLine(hooks.Count()); // 1 (bummer...)
public interface IEvent;
public interface IHook where TEvent : IEvent
{
void On(TEvent @event);
}
public record SpecificEvent(int Foo) : IEvent;
public class SpecificEventHook : IHook
{
public void On(SpecificEvent @event)
{
}
}
public class GeneralEventHook : IHook
{
public void On(IEvent @event)
{
}
}
Код: Выделить всё
in TEvent); и, следовательно, IHookНо это похоже на стандартную зависимость .NET Система впрыска этого не поддерживает. На удивление, в Интернете очень мало информации об этом типе сценария.
Мне интересно, почему? Нет ли способа настроить контейнер DI для достижения этой цели? Если нет, то какой разумный обходной путь может быть для такого типа требований?
Подробнее здесь: https://stackoverflow.com/questions/789 ... e-variance
Мобильная версия