5

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

1 回答 1

12

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

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

于 2013-10-01T16:43:49.223 回答