ASP.NET web formlarını kullanarak IoC konteynerini uygulamak istiyorum. Bu adımları tamamladım ediyorum: Kernel
IoC Container WebForms'ta çalışmıyor
public override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new Module.Module());
return kernel;
}
oluştur Ninject
ve Ninject.Web
ddl
public class Global : NinjectHttpApplication
yükleyin oluşturma
012 Inject kullanmaModule
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(); } }
üzerinde Ve bu IoC konteyner bu MetricService
bağlamak gerekir MetricService
yapıcısındaki IMetricService
geçerken Anlıyorum gibi benim MetricService
sınıf
public class MetricService : IMetricService
{
[Inject]
private IMetricService _metricService;
public MetricService(IMetricService metricService)
{
this._metricService = metricService;
}
public void GetAllCriteria()
{
_metricService.GetAllCriteria();
Console.WriteLine("metric service");
}
}
olduğunu sınıf. Sanırım hatam genel ama nerede olduğunu anlayamıyorum.
DI fikri var yukarı newing olduğunuzu PageInit içinde, konkresyonları bağlı kalmamak olduğunu atılır Bir bağımlılık? – Magrangs
In ** PageInit ** ne yapmam gerekiyor? –
İlk önce metricService = yeni MetricService (metricService); Kapsayıcı size doğru örneği sağlayacaktır. – Magrangs