У меня есть две регистрации таких служб:
Код: Выделить всё
builder.RegisterType().As();
builder.RegisterType().Keyed("buzzinga!");
Тогда где-то в моем приложении есть следующий код:
Код: Выделить всё
using (var myScope = _container.BeginLifetimeScope())
{
var service = myScope.Resolve
}
Раньше никаких назначений/разрешений ключей не было.
Кстати, если я использую PreserveExistingDefaults() для вторых регистраций - никакого эффекта (что на самом деле нормально, потому что обе регистрации не имеют одинакового уровня).
Как я это решил: вторая регистрация идет первой.
В этом случае в регистрация области без ключа будет корректно разрешена путем обычного вызова метода Resolve. И в случае, если мне нужна регистрация с ключом - я могу использовать ResolveKeyed, который тоже будет работать правильно.
Мой вопрос: правильно ли это поведение, когда две разные регистрации (с ключом и без ключа) могут переопределять друг друга в случае, если регистрации с ключом идут после обычной регистрации без ключа?
Может быть, я что-то неправильно понял, но регистрации с ключом и без ключа должны быть разделены и не должны влияют друг на друга.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -was-it-by
Мобильная версия