コントローラーに空のデフォルト コンストラクターがないと ninject が機能しないという問題に遭遇しました。次のように、 app_start の NinjectWebCommon.cs にバインドして登録します。
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IServices.IAccountProvider>().To<Providers.Account.Service.AccountProvider>();
kernel.Bind<IServices.IContractProvider>().To<Providers.Contract.ContractProvider>();
kernel.Bind<IServices.IProductProvider>().To<Providers.Product.ProductProvider>();
kernel.Bind<IServices.IChannelProvider>().To<Providers.Channel.ChannelProvider>();
kernel.Bind<IServices.ITaskProvider>().To<Providers.Task.TaskProvider>();
kernel.Bind<IServices.IExportProvider>().To<Providers.Export.ExportProvider>();
kernel.Bind<IServices.IImportProvider>().To<Providers.Import.ImportProvider>();
kernel.Bind<IServices.IQuoteProvider>().To<Providers.Quote.QuoteProvider>();
kernel.Bind<IServices.IEmailProvider>().To<Providers.Email.EmailProvider>();
kernel.Bind<IServices.IQuoteManagementProvider>().To<Providers.Quote.Management.QuoteManagementProvider>();
kernel.Bind<IServices.IImportPricebookProvider>().To<Providers.Import.Pricebook.PricebookProvider>();
kernel.Bind<IServices.IDashboardProvider>().To<Providers.Dashboard.DashboardProvider>();
kernel.Bind<IServices.IAuditProvider>().To<Providers.Audit.AuditProvider>();
}
}
私のコントローラーでは、次のように宣言されたプロパティがあります。
[Inject]
public IAccountProvider AccountProvider { get; set; }
しかし、これは次のような空のコンストラクターがある場合にのみ機能します。
public AccountController()
{
}
そうしないと、次のエラーが発生します。
AccountController の暗黙的な自己バインディングを使用して AccountController をアクティブ化する際のエラー 実装型のインスタンスを作成するために使用できるコンストラクターがありませんでした。
デフォルトのコンストラクターなしでこれを行う方法はありますか、それとも解決策ですか?