Ninject属性注入不起作用

时间:2013-09-30 10:06:15

标签: c# webforms ninject

我是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; }

1 个答案:

答案 0 :(得分:11)

我怀疑包含_sessionUtilities属性的类是使用new而不是通过Ninject创建的。

如果包含的实例也是由Ninject创建的,则Ninject只会注入您的_sessionUtilities属性,因为它是使用kernel.Get()创建的,或者因为它本身正在被注入。