ورود

View Full Version : مقداردهی به سازنده های کنترلر ها



Eight 01
شنبه 12 مرداد 1392, 14:40 عصر
با سلام

من یک سری کنترلر دارم که سازنده هایی دارند که یک سری اینترفیس رو به عنوان پارامتر ورودی دریافت می کنند.

نمونه
Public class HomeController : Controller
{
private readonly ITest _test;

public HomeController(ITest test)
{
this._test = test;
}

public ActionResult Index()
{
return View();
}
}

حالا با توجه به به الگوی dependency injection آیا می تونم این پارامترها رو مقدار دهی کنم و اگه میشه ، چگونه؟

یک سری پروژه مطالعه کردم که بنظرم به کمک autofac اینکار رو انجام دادن البته اگه اشتباه نکنم.

من هم از autofac کمک گرفتم و کد زیر رو در application_start قرار دادم اما جواب نمیده و هچنان خطای "No parameterless constructor defined for this object." در زمان اجرای سازنده صادر میشه.

var b = new ContainerBuilder();


b.RegisterType<Test>().As<ITest>();


IContainer bt = b.Build();



DependencyResolver.SetResolver(new AutofacDependencyResolver(bt));

Eight 01
شنبه 12 مرداد 1392, 19:36 عصر
مشکل به خاطر رجیستر نبودن کنترلرها بود.
با متد RegisterControllers کنترلرها رو هم رجیستر میکنم.

var b = new ContainerBuilder();

b.RegisterControllers(Assembly.GetExecutingAssembl y());

b.RegisterType<Test>().As<ITest>().InstancePerHttpRequest();

IContainer bt = b.Build();

DependencyResolver.SetResolver(new AutofacDependencyResolver(bt));