asp.net mvc autofac регистрация и распознавание - PullRequest
1 голос
/ 22 августа 2011

Я работаю над приложением ASP.NET MVC 3.Я использую Autofac в качестве средства разрешения зависимостей.У меня есть два проекта одно ядро ​​и другой пользовательский интерфейс.В основном проекте у меня есть интерфейс, который содержит информацию о зарегистрированном пользователе, если таковой имеется.Это унаследовано в моем проекте пользовательского интерфейса.

public interface IWebContext
{
  User User {get;set}
  bool IsLoggedIn {get;} 

}

В пользовательском интерфейсе это реализовано как

public class WebContext :  IWebContext
{
//codes here to get user and islogged in proerty.
}

. В базовом проекте я создаю ссылку на основе некоторой логики..asax Я регистрирую все свои службы, используя статический класс IOC

 protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterRoutes(RouteTable.Routes);

        IOC.Build();

    }

, вот мой класс IOC.

public static class IOC 
{
    private static IContainer _container;
    public static void Build()
    {

        ContainerBuilder builder = new ContainerBuilder();
        builder.RegisterControllers(Assembly.GetExecutingAssembly());
        builder.Register(c => new WebContext()).As<IWebContext>().SingleInstance();
        builder.Register(c => new ImageServiceLocal()).As<IImageService>().InstancePerHttpRequest();
        builder.RegisterFilterProvider();
        _container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
    }

    public static T Resolve<T>()
    {
        if (_container == null)
            Build();

        return _container.Resolve<T>();


    }


}

1 Ответ

3 голосов
/ 22 августа 2011
var webContext = DependencyResolver.Current.GetRequestLifetimeScope()
                                           .Resolve<IWebContext>();
...