我是Ninject的新手,我需要一些帮助才能继续前进。
我有一个由web.form(演示文稿)和各种其他类库项目组成的解决方案。
在NinjectWebCommon cs文件中的web.form应用程序中,我有以下内容
kernel.Bind<HttpContext>()
.ToMethod(ctx => HttpContext.Current).InThreadScope();
kernel.Bind<HttpContextBase>()
.ToMethod(ctx => new HttpContextWrapper(HttpContext.Current)).InTransientScope();
kernel.Bind<MPIBE.DESTINATION.CORE.SiteContext>()
.ToMethod(ctx => new MPIBE.DESTINATION.CORE.SiteContext(
new HttpContextWrapper(HttpContext.Current)
));
我正在尝试获取类的实例(在构造函数之后)
public SessionUtilities(SiteContext siteContext)
{
_siteContext = siteContext;
}
我注意到我只能从web.forms应用程序获取实例,而我无法从其他项目(类库)获取。这有什么意义吗?
我试图通过属性注入获取实例
[Inject]
public SessionUtilities _sessionUtilities { get; set; }
答案 0 :(得分:11)
我怀疑包含_sessionUtilities
属性的类是使用new
而不是通过Ninject创建的。
如果包含的实例也是由Ninject创建的,则Ninject只会注入您的_sessionUtilities
属性,因为它是使用kernel.Get()
创建的,或者因为它本身正在被注入。