Контейнер, внедренный в конструктор с параметром IContainer, является тем же контейнером, который создает экземпляр класса с помощью конструктора.
Джереми Миллер выразил такое поведение как «IContainer внедряется в себя по умолчанию» в своем блоге на NHibernate с StructureMap .
Не могли бы вы использовать фабричную модель для создания этих зависимостей, когда это необходимо, чтобы уменьшить вашу связь с контейнером?
Вы можете сделать так, чтобы ваша модель принимала Func в качестве параметра и могла использовать SM для автоматического ввода:
public class MyModel
{
Func<IHeavyDep> _heavyFactory;
public MyModel(Func<IHeavyDep> dependency)
{
_heavyFactory = dependency;
}
public void UsesHeavy()
{
var heavy = _heavyFactory();
heavy.DoMyStuff();
}
}