Ninject属性注入不起作用

pro*_*nis 5 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)
       ));
Run Code Online (Sandbox Code Playgroud)

我想获取一个类的实例(遵循构造函数)

public SessionUtilities(SiteContext siteContext)
{
    _siteContext = siteContext;
}
Run Code Online (Sandbox Code Playgroud)

我注意到我只能从web.forms应用程序获取实例,而我无法从其他项目(类库)获取.这有意义吗?

我试图通过属性注入获取实例

[Inject]
public SessionUtilities _sessionUtilities { get; set; }
Run Code Online (Sandbox Code Playgroud)

sha*_*p00 11

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

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

  • 是! 依赖注入是[乌龟一直向下](https://en.wikipedia.org/wiki/Turtles_all_the_way_down). (3认同)