Autofac — автоматические инъекции в контроллер?

Копаюсь с примерами, статьями — никак понять не могу.


Вот есть у нас регистрация Autofac (функционал примитивный, чисто что бы поучиться).

public interface ISiteInfo
    {
        string GetReffer(Controller controller);
    }

    public class SiteInfo : ISiteInfo
    {
        public string GetReffer(Controller controller)
        {
            if (controller.Request.UrlReferrer != null)
            {
                return controller.Request.UrlReferrer.ToString();
            }
            return "";
        }
    }

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(typeof (MvcApplication).Assembly);
            builder.RegisterType<SiteInfo>();            
            builder.Register<ISiteInfo>(x => x.Resolve<SiteInfo>());
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        [...]
        }
    }



Есть. Отлично. Но как задействовать автосоздание нужного экземпляра класса?


В ninject это выглядело бы так:

public class QuestsListController : Controller
    {
        [Inject]
        public ISiteInfo InfoObject { get; set; }
        [...]
    }



Но как подобный вариант так же красиво реализовать с autofac я не понял — приходится использовать такой.

public class QuestsListController : Controller
    {
        public ISiteInfo InfoObject { get; set; }

        public QuestsListController(SiteInfo _InfoObject)
        {
            InfoObject = _InfoObject;
        }
        [...]
    }



Что ни есть красиво

Как быть с подобными вещами? Или я просто чего-то не понимаю?


Всё-таки по попадавшимся мне тестам Ninject по скорости сильно уступает остальным.
  • Вопрос задан
  • 7751 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы