Обычная регистрация услуги будет заменена регистрацией с ключом. Было ли это сделано намеренно?C#

Место общения программистов C#
Ответить
Anonymous
 Обычная регистрация услуги будет заменена регистрацией с ключом. Было ли это сделано намеренно?

Сообщение Anonymous »

У меня есть приложение .NET 8.0 + Autofac 8.4.0, без мультиарендности — просто обычный веб-API ASP.NET Core.
У меня есть две регистрации таких служб:

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

builder.RegisterType().As();
builder.RegisterType().Keyed("buzzinga!");
Итак, основная идея заключалась в использовании как общей регистрации, так и регистрации по ключу.
Тогда где-то в моем приложении есть следующий код:

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

using (var myScope = _container.BeginLifetimeScope())
{
var service = myScope.Resolve
}
И в этом случае я ожидаю, что SomeService будет разрешен. Но вместо этого был разрешен SomeAlternativeService.
Раньше никаких назначений/разрешений ключей не было.
Кстати, если я использую PreserveExistingDefaults() для вторых регистраций - никакого эффекта (что на самом деле нормально, потому что обе регистрации не имеют одинакового уровня).
Как я это решил: вторая регистрация идет первой.
В этом случае в регистрация области без ключа будет корректно разрешена путем обычного вызова метода Resolve. И в случае, если мне нужна регистрация с ключом - я могу использовать ResolveKeyed, который тоже будет работать правильно.
Мой вопрос: правильно ли это поведение, когда две разные регистрации (с ключом и без ключа) могут переопределять друг друга в случае, если регистрации с ключом идут после обычной регистрации без ключа?
Может быть, я что-то неправильно понял, но регистрации с ключом и без ключа должны быть разделены и не должны влияют друг на друга.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -was-it-by
Ответить

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

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

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

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

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