Предположим, у меня есть два типа, TypeA и TypeB, которые я хочу зарегистрировать в Unity. TypeB зависит от TypeA, поэтому я хочу внедрить TypeA в тип B с помощью инжектора конструктора. Поэтому я хотел бы написать что-то вроде следующего и сделать так, чтобы Unity был достаточно умен, чтобы каскадировать разрешение для меня:
_container.RegisterType<ITypeA, TypeA>();
_container.RegisterType<ITypeB, TypeB>();
Как я могу сказать Unity разрешить TypeA и ввести в TypeB?
Похоже, что это возможно при использовании файла конфигурации, но я не знаю, как бы вы сделали это программно:
<type name="typeB" type="ITypeB" mapTo="TypeB">
<lifetime type="Singleton"/>
<typeConfig extensionType="...">
<constructor>
<param name="typeA" parameterType="ITypeA">
<dependency/>
</param>
</constructor>
</typeConfig>
</type>
Заранее спасибо за любые предложения!
РЕДАКТИРОВАТЬ: Итак, Unity справляется с этим для меня. Тем не менее, я думаю, что моя проблема в том, что у меня есть класс с двумя конструкторами:
public TypeB(TypeA typeA)
{
_x = typeA;
}
public TypeB() : this(Something.Value)
{
}
Похоже, у Unity возникли проблемы с пониманием, какой конструктор использовать. Первый конструктор предназначен для модульного тестирования, а второй должен использоваться во время выполнения. Единство испытывает проблемы с этим.