Я экспериментирую с IoC в своем веб-приложении и хочу делать вещи в соответствии с лучшими практиками. Недавно я обнаружил структуру IoC под названием DryIoc, которая должна быть небольшой и быстрой.Где положить контейнер?
Я прочитал примеры, но ни один из них не указывает, куда я должен поместить контейнер.
Должно ли оно находиться в контроллере? Или в Global.asax? Где-то еще может быть? Или, возможно, как статическая переменная в классе?
Я был бы признателен, если бы кто-нибудь мог вести меня в правильном направлении, предпочтительно с некоторым примером кода, поскольку я зашел в тупик и не получил ключ к тому, как продолжить.
var container = new Container(); // Should obviously NOT be a local variable
container.Register<ISalesAgentRepository, SalesAgentRepository>(Reuse.Singleton);
Вам необходимо использовать контейнер в [корневом составе] (http://blog.ploeh.dk/2011/07/28/CompositionRoot/). –
Я бы предложил использовать более широко используемый контейнер, чтобы начать работу с DI, так как вы найдете гораздо больше поддержки, примеров и инструментов. Если после использования другого контейнера вы решите попробовать эти небольшие контейнеры с незавершенными путями, тогда у вас будет опыт, чтобы знать, как правильно их использовать. –
В отличие от других комментариев и ответов здесь, я бы рекомендовал вам [не использовать контейнер DI вообще] (http://blog.ploeh.dk/2014/06/10/pure-di). Это принесет пользу, что вы узнаете основные шаблоны лучше, и вы не столкнетесь с какой-то неудобной проблемой API. –