在我的主布局页面中,我只需要访问一个SessionManager实例来显示登录的用户。
我的工作原理如下(_Layout.cshtml):
@using Ninject
@{
var kernel = new StandardKernel();
var sm = kernel.Get<SessionManager>();
}
<!DOCTYPE html>
<html>
...
etc...
然后我进一步使用这样的实例:
<p>Logged in as @(sm.LoggedInUser.Name)</p>
现在这样可行,但这是不整洁的吗?我能以更好的方式做到这一点吗?是否可以像这样创建一个StandardKernel实例(我假设它是一个单例)?
我考虑过让所有控制器从一个基本控制器继承,并将SessionManager注入基本控制器,但它似乎略高于顶层。
答案 0 :(得分:4)
通常,NInject MVC扩展插入MVC的依赖性解析器基础架构,您应该能够通过它解析您的服务:
var sm = DependencyResolver.Current.GetService<SessionManager>();