Используя контейнер DI .NET Core, зарегистрировал открытый универсальный интерфейс с контейнером DI, но при попытке разрешить его двумя разными способами, чтобы получить соответствующий экземпляр, продолжает получать исключение компиляции. Как это решить?
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped(typeof(GenericRepository));
services.AddScoped(typeof(IRepository),typeof(CachingRepository));
services.AddScoped(typeof(IRepository), provider =>
{
var baseRepository = provider.GetRequiredService();
var configuration = provider.GetRequiredService();
var useCache = configuration.GetValue("UseCache");
if (useCache)
{
// Getting error: Type or namespace T could not be found
var cacheRepo = provider.GetRequiredService();
}
else
{
// Getting error: // Type or namespace T could not be found
var cacheRepo = provider.GetRequiredService(typeof(GenericRepository).MakeGenericType(typeof(T)));
}
});
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... rviceprovi
Мобильная версия