如何使用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知之甚少。
答案 0 :(得分:6)
好的,所以文档类型暗示了这一点,但他们没有使用界面并注册.ToSelf()
。
基本上我需要使用上面的StandardKernel
来实例化新的ServicesModule
,并为我注册的界面调用.Get<>();
方法。
IKernel kernel = new StandardKernel(new ServicesModule());
var processor = kernel.Get<IReportGenerationProcessor>();
processor.ProcessMessage(message);