Я пытаюсь обернуть голову вокруг наилучшего способа использовать IoC в своем приложении для инъекций зависимостей, однако у меня есть небольшая проблема.IoC и пользовательские интерфейсы
Я использую свободную реализацию шаблона MVP с WPF-приложением. По существу, создается экземпляр класса презентатора, и в презентаторе вводятся представление и задача (например, IEmployeeView и IEmployeeTask для EmployeePresenter).
Я хотел бы использовать контейнер IoC (я пытаюсь объединить Unity, хотя я предполагаю, что это также произойдет с другими, такими как ninject или Structure Map) вместо ручного ввода этих экземпляров, однако, если создатель создается (или разрешено из контейнера IoC) на вызов асинхронного делегата, или поток событий (например, не STA резьбы), а затем создать новый экземпляр окна WPF выдает следующее исключение:
текущей операция сборки (ключ сборки Build Key [namespace .Window1, null]) не удалось: вызывающий поток должен быть STA, поскольку многие пользовательские интерфейсы c Для этого нужны .
Теперь я знаю, что новые экземпляры окна и т.д. должны быть STA, однако можно использовать IoC контейнер делать инъекции зависимостей, даже если пользовательский интерфейс должен быть создан на STA потоке?
Глядя на этой проблеме, казалось бы, что класс/тип разрешаются инициализируются в то время решимости, а не когда его зарегистрировали ...
Это наиболее вероятная причина, контейнеры IoC отлично работают в WPF. – Jab 2008-11-26 18:40:24