e36*_*6M3 0 c# asp.net dependency-injection ninject ioc-container
我在会话中有一个配置文件对象,其中包含当前登录用户的配置文件信息.我的魔杖能够将它注入我的业务类中,所以我可以在其中进行验证等,而不必在每个方法的参数列表中传递它.
我在我的ninject模块中尝试过类似的东西:
Profile profile = HttpContext.Current.Session["Profile"] as Profile;
Bind<Profile>().ToConstant(profile).InTransientScope();
Run Code Online (Sandbox Code Playgroud)
但是当我在我的aspx中执行Kernel.Get()时,它会以null引用而爆炸.BusinessObject通过构造函数获取配置文件.如果我硬编码配置文件而不是使用HttpContext,那么一切似乎都有效.不确定ToConstant是否可行,我真的在寻找每次创建新BusinessObject时都会得到评估的东西.
UPDATE
似乎要求在页面级对象内联上进行注入对于会话集合来说太早了.如果我移入Kernel.Get调用Page_Load它就可以了.
我认为您的代码发生了什么,在您创建绑定时,会话配置文件为空.
你可能需要做这样的事情:
Bind<Profile>()
.ToMethod(context =>
HttpContext.Current.Session["Profile"] as Profile);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |