使用Ninject获取实例

时间:2015-12-16 15:39:39

标签: c# ninject

如何使用Ninject获取单个实例?这是我的服务模块:

IReportGenerationProcessor

我需要一个Object instance not set to an instance of an object实例来触发我从Azure Service Bus队列接收的邮件。

我见过很多不同的方式,但没有一个对我有用。我经常收到错误://I do instantiate this class using new WebJobBase(); public class WebJobBase { public void ProcessMessage(BrokeredMessage message) { // Just need an instance of IReportGenerationProcessor here var _processor = new ReportGenerationProcessor(); _processor.ProcessMessage(message); } }

IReportGenerationProcessor

这是我的 public interface IReportGenerationProcessor { DocumentMetaData ProcessMessage(BrokeredMessage message); } public class ReportGenerationProcessor : IReportGenerationProcessor { // Go figure these don't work either [Inject] public IConfigurationService _config { get; set; } [Inject] public IDocumentServiceApi _docService { get; set; } public DocumentMetaData ProcessMessage(BrokeredMessage message) { var report = message.GetBody<ReportMetaData>(); //Do some stuff return new DocumentMetaData(); // just a place holder } } 实施:

{{1}}

如果我能提供更多信息,请告诉我。我对Ninject知之甚少。

1 个答案:

答案 0 :(得分:6)

好的,所以文档类型暗示了这一点,但他们没有使用界面并注册.ToSelf()

基本上我需要使用上面的StandardKernel来实例化新的ServicesModule,并为我注册的界面调用.Get<>();方法。

IKernel kernel = new StandardKernel(new ServicesModule());
var processor = kernel.Get<IReportGenerationProcessor>();
processor.ProcessMessage(message);