Я работаю над приложением 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>();
}
}