Похоже стандартным подходом к МОК, когда данный сценарий как (C# Виндзор):Что такое рассуждение за этим IoC поведения (Resolve с несколькими зарегистрированных компонентами)
container.AddComponent<ILogger, HttpLogger>();
container.AddComponent<ILogger, SmtpLogger>();
var logger = container.Resolve<ILogger>();
Был бы, что при решении компоненты , первый зарегистрированный ILogger (HttpLogger в этом случае) является единственным кандидатом на разрешение, тогда ioc найдет «самый толстый» конструктор, где он может найти, что он может разрешить все зависимости.
Однако вполне возможно, что ioc не сможет разрешить зависимости для первого регистратора и, следовательно, вернуться с проблемой разрешения, вполне возможно, что SmtpLogger COULD был разрешен, если ioc попробовал его.
Итак, в чем же причина использования только первого зарегистрированного сервиса в качестве кандидата? кажется, что неопределенность того типа, который вы получите, является аргументом, но тогда ioc остается ответственным за конструктор, который он использует в любом случае.
Так почему бы не выбрать из всех конструкторов всех применимых типов и начать пытаться разрешить от самых плохих конструкторов вниз (агностик реального типа)?
Это может иметь действительно очевидный ответ, но, честно говоря, я этого не знаю.
Заранее благодарен, Stephen.
Hi. Пожалуйста, интересно, какой язык кодирования вы используете в своем примере? – KLE
Язык примера был C#, а контейнером примера был Castle Windsor. – meandmycode