Я добавляю новый Singleton (Service B) в свой проект .NET, который зависит от значения, полученного от другой услуги. Синглтон может быть одним из двух экземпляров класса в зависимости от значения, возвращаемого Servicea. < /P>
serviceList
.AddSingleton()
.AddSingleton()
...
builder.Build()
< /code>
Как упоминалось ранее, в зависимости от значения от Servicea, ServiceB может быть ServiceBimpl1 или ServiceBimpl2. Регистрация обеих сервисов кажется ненужной. < /P>
Я подумал, что смогу использовать функцию лямбды, чтобы справиться с этим, но кажется, что она не может найти зависимую службу правильно: < /p>
.AddSingleton(serviceList => {
var serviceA = serviceList.GetRequiredService();
var someResponseFromA = serviceA.doSomething();
if (someResponseFromA == 1)
{
return new ServiceBImpl1();
}
else
{
return new ServiceBImpl2();
}
})
< /code>
dosomething в этом случае всегда возвращает нулевое значение и жалуется на то, что Serviceaimpl недоступен (для контекста, что -то является блокирующим вызовом). Как бы я получил значения, которые я хочу от ServiceaImpl, для надлежащего регистрации ServiceB?
Подробнее здесь: https://stackoverflow.com/questions/795 ... ervice-via
Как создать синглтон, зависимый от значения, полученного другим услугой, посредством инъекции зависимости в .net 8.0? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение