Мунк не будет распоряжаться ничем.Если вам нужна эта возможность, было бы лучше использовать другой контейнер IoC, такой как Autofac.
Однако во многих случаях я сомневаюсь в реальной необходимости позволить контейнеру распоряжаться объектами для вас.Хорошим примером является единица работы, потому что ваш IUnitOfWork
в любом случае будет иметь метод Commit()
, который, вероятно, вызывается в приложении.Класс, который вызывает Commit
, скорее всего, отвечает за время жизни IUnitOfWork
и, следовательно, также за вызов commit.
Вы можете решить это с помощью , а не , вводя IUnitOfWork
,но впрыскивая IUnitOfWorkFactory
.Класс, которому нужна единица работы, может сделать следующее:
using (IUnitOfWork unit = this.uowFactory.CreateNew())
{
// Do some useful stuff.
unit.Commit();
}
ОБНОВЛЕНИЕ Декабрь 2012:
Мое мнение о том, какРегистр экземпляров Unit of Work (частично) изменился из-за новых идей и способов разработки приложений.Вместо того, чтобы вводить фабрику, я в настоящее время люблю вводить IUnitOfWork
напрямую.Это означает, что было бы хорошо избавиться от единицы работы, когда определенная область (например, веб-запрос) заканчивается.Как объяснял @DaRKoN_, начиная с Munq 3.14, RequestLifetime располагает экземплярами.
Этот вопрос и ответ Stackoverflow дает подробное объяснение того, когда и как вводить единицу работ напрямую, а не вводить фабрики.