ASP.NET Webフォームを使用してIoCコンテナを実装したいと考えています。私は、これらのステップを完了しています:WebフォームでIoCコンテナが動作しない
は
012を作成Module
Kernel
public override IKernel CreateKernel() { IKernel kernel = new StandardKernel(new Module.Module()); return kernel; }
を作成
Ninject
とNinject.Web
DDLpublic class Global : NinjectHttpApplication
をインストールします。ジェクトを使用して
public override void Load() { Bind<IMetricService>().To<MetricService>(); }
Page
public partial class _Default : Page { [Inject] private IMetricService metricService; protected void Page_Init(object sender,EventArgs e) { metricService = new MetricService(metricService); } protected void Page_Load(object sender, EventArgs e) { metricService.GetAllMetrics(); } }
上のそして、これはIoCコンテナはこのMetricService
をバインドする必要がありますMetricService
コンストラクタでIMetricService
を渡すときに私は理解したように私MetricService
クラス
public class MetricService : IMetricService
{
[Inject]
private IMetricService _metricService;
public MetricService(IMetricService metricService)
{
this._metricService = metricService;
}
public void GetAllCriteria()
{
_metricService.GetAllCriteria();
Console.WriteLine("metric service");
}
}
ですクラス。私のミスは一般的だと思うが、どこを理解するのか分からない。
を投げられるこの方法で作ります依存関係? – Magrangs
** PageInit **で何をする必要がありますか? –
まず、metricService = new MetricService(metricService)を削除します。コンテナは正しいインスタンスを提供します。 – Magrangs