WCF Ninject 拡張機能を使用して WCF サービスに Ninject を追加しようとしています。
エラーが発生します:
指定されたサービス タイプは、デフォルト (パラメーターなし) のコンストラクターを持たないため、サービスとして読み込むことができませんでした。この問題を解決するには、既定のコンストラクターを型に追加するか、型のインスタンスをホストに渡します。
このサービスには Ninject Service Host ファクトリがあります。
<%@ ServiceHost Language="C#" Debug="true" CodeBehind="SchedulingSvc.svc.cs"
Service="Scheduling.SchedulingSvc"
Factory="Ninject.Extensions.Wcf.NinjectWebServiceHostFactory" %>
global.asax ファイルは NinjectHttpApplication から継承し、CreateKernel は NinjectModule を持つ新しいカーネルを返します。
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
return new StandardKernel(new NinjectServiceModule());
}
}
NinjectModule:
public class NinjectServiceModule : NinjectModule
{
public override void Load()
{
this.Bind<ISchedulingService>().To<SchedulingSvc>();
this.Bind<ISchedulingBusiness>().To<SchedulingBusiness>();
}
}
コンストラクター注入によるサービス:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SchedulingSvc : ISchedulingService
{
private ISchedulingBusiness _SchedulingBusiness = null;
public SchedulingSvc(ISchedulingBusiness business)
{
_SchedulingBusiness = business;
}
public CalendarEvent[] GetCalendarEvents()
{
var calendarEvents = _SchedulingBusiness.GetCalendarEvents();
return calendarEvents;
}
...
}
プロパティ注入を伴うサービス:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SchedulingSvc : ISchedulingService
{
[Inject] public ISchedulingBusiness _SchedulingBusiness { get; set; }
public SchedulingSvc()
{
}
public CalendarEvent[] GetCalendarEvents()
{
var calendarEvents = _SchedulingBusiness.GetCalendarEvents();
return calendarEvents;
}
...
}
コンストラクター注入を使用すると、投稿の上部に記載されているエラーが発生します。プロパティ インジェクションを使用しようとすると、_ScheduleBusiness は常に null になります。
私は何が欠けていますか?