Mugen Injection [Типы отношений]
Зависимости с типами которые указаны ниже интерпретируются особым образом. Например, когда вы запрашиваете тип IEnumerable <IBeta>, если MugenInjection не найден тип заданный явно, он создаст новую коллекцию и заполнит ее всеми доступными компонентами типа IBeta.
Неявные типы отношений
Отношение | Тип | Смысл |
---|---|---|
Alpha нуждается в Beta | Beta | Зависимость |
Alpha нуждается в Beta в будущем | Lazy<Beta>, CustomLazy<Beta> | Отложенная инициализация |
Alpha нуждается в Beta до какого-то момента | Managed<Beta>, CustomManaged<Beta> | Контролируемый жизненный цикл |
Alpha нуждается в Beta до какого-то момента | UoW<Beta>, CustomUoW<Beta> | Контролируемый жизненный цикл |
Alpha нуждается в создании Beta | Func<Beta>, CustomFunc<Beta> | Динамическое создание |
Alpha нуждается в создании Beta с параметрами | Func<P1, P2, Beta> | Динамическое создание с параметрами |
Alpha нуждается в создании Beta со специальными параметрами | Func<ISettings, Beta> | Динамическое создание со специальными параметрами |
Alpha нуждается во всех экземлярах Beta | IEnumerable<Beta>, IList<Beta>, List<Beta>, ICollection<Beta>, ICustomCollection<Beta> | Коллекция |
Alpha нуждается в Beta с метаинформацией | WithSettings<Beta>, WithCustomSettings<Beta> | Метаинформация |
Для перекрытия этого поведения вам нужно зарегистрировать компонент явно
Составные типы
Все типы отношений могут быть составными:IEnumerable<Func<Managed<Beta>>>
- Создание всех экземляров
- фабрики, которая возвращает
- контролируемые
- Beta компоненты