Два общих механизма для создания привязок инъекций зависимостей, например, через контейнер IOC, - это конфигурация XML или блок императивного кода. В этих случаях пара значений ключа является явной (т.е. Ключ = запрошенный тип, value = возвращаемый тип).
Тем не менее, существует третий "эвристический" подход, при котором контейнеру приложения /IOC присваиваются только ключи [IMyClass], и затем контейнер отображает множество зависимостей сборки приложения, чтобы найти все сопоставленные по конкретному классу конкретные классы [MyClass]. Говоря иначе, значения типа "возвращаемого типа" обнаруживаются, а не объявляются.
То, что я хотел бы знать, двоякое:
- Какие контейнеры МОК (или другие инструменты позднего связывания) допускают эвристический подход? Имеет ли этот подход более общее название?
- Существуют ли другие методы привязки, кроме трех перечисленных мной, которые используются на практике?