Регистрация службы и реализация с помощью AddKeyedScopedC#

Место общения программистов C#
Ответить
Anonymous
 Регистрация службы и реализация с помощью AddKeyedScoped

Сообщение Anonymous »

Это мой интерфейс

Код: Выделить всё

 public interface IService
{
public Task GetString();
}
Это мой класс DAL

Код: Выделить всё

 public class SampleDAL : IService
{
public async Task GetString()
{
//do something
}
}
Это мой класс BL

Код: Выделить всё

public class SampleBl([FromKeyedServices("SampleBl")]IService service) : IService
{
public Task GetString()
{
var something = service.GetString();
return something;

}

}
В моем контроллере я использую BL

Код: Выделить всё

[Route("[controller]")]
[ApiController]
public class SampleController([FromKeyedServices("SampleBl")] IService serviceBl) : Controller
{
[HttpGet("GetSomeString")]
public async Task GetString()
{
var somethingout = serviceBl.GetString();
return somethingout;
}
}
В My program.cs я зарегистрировал службу и ее реализацию как

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddKeyedScoped("SampleDal");
builder.Services.AddKeyedScoped("SampleBl");
Но при запуске API я получаю сообщение об ошибке. Ошибка

Код: Выделить всё

Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType:  Lifetime: Scoped ServiceKey:  KeyedImplementationType: ': A circular dependency was detected for the service of type ''.
Пожалуйста, сообщите мне, где я делаю ошибку.

Подробнее здесь: https://stackoverflow.com/questions/792 ... eyedscoped
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»