我已经创建了一个项目
Boilerplate
我有一个MySession类,它将从MvcControllers和WebApi控制器中使用。
MySessionMvc:
public override string UserId {
get {
return Thread.CurrentPrincipal.Identity.GetUserId();
}
}
和
MySessionWebApi:
public override string UserId {
get {
System.Web.HttpContext.Current.Request.Headers["UserId"];
}
}
我注册了两个班级:
IocManager.RegisterIfNot<IMySession, MySessionMvc>(DependencyLifeStyle.Singleton, "MyNamespace.MySessionMvc");
IocManager.RegisterIfNot<IMySession, MySessionWebApi>(DependencyLifeStyle.Singleton, "MyNamespace.MySessionWebApi");
现在是时候告诉相关控制器将使用哪个MySession派生类了。
我明白了,现在我可以很容易地将它注入我的控制器
protected MyBaseController(IWindsorContainer container)
{
MySession = container.Resolve<IMySession> "MyNamespace.MySessionWebApi");
}
在控制器级别,我实现了我的目标。
namespace My.Auditing
{
internal class AuditingInterceptor : IInterceptor
{
public IMySession MySession { get; set; }
}
}
我如何才能在拦截器级别正确解析相关的MySession?