عنوان:

‫تزریق وابستگی به کنترلرهای Asp.Net MVC توسط LightInject


نویسنده: فرهاد شربیانی
تاریخ: ۱۳۹۴/۰۳/۱۰ ۱۳:۲۴
آدرس: www.dntips.ir
LightInject یکی از IoC Container‌های مخصوص دات نت می‌باشد که سرعت و امکانات مناسبی نیز دارد.

برای استفاده از این کتابخانه nuget-package‌های مورد نیاز آن را به پروژه خود اضافه کنید: 
PM> Install-Package LightInject
PM> Install-Package LightInject.Mvc
سپس به متد Application_Start در Global.asax کدهای زیر را اضافه کنید:
protected void Application_Start()
{
    var container = new ServiceContainer();
    container.RegisterControllers();        

    //در اینجا وابستگی‌های خود را تعریف کنید

    container.EnableMvc()              
}
تمام!
خلاصه:
- کنترلرها را رجیستر کنید (container.RegisterControllers).
- وابستگی‌های دیگر پروژه را تعریف کنید.
 - و نهایتا امکانات MVC لایت انجکت را فراخوانی کنید (container.EnableMvc). 
نیازی به باز نویسی کلاس DefaultControllerFactory نیست. تمامی اتفاقات مورد نیاز در دل LightInject.MVC انجام خواهد شد.


مشاهده مطلب اصلی

نظرات

  • احمد نواصری در ۱۳۹۴/۰۳/۱۲ ۱۰:۲۵
    به نظر من برای جلوگیری از شلوغ شدن متد Application_Start بهتره container رو ببریم تو یه کلاس دیگه و توسط یه متد استاتیک به صورت زیر نوشته بشه :
     public class Injector
        {
            public static void Inject()
            {
                var container = new ServiceContainer();
                container.RegisterControllers();
                container.Register<IProduct, ProductService>();
                container.EnableMvc();
            }
        }
    و بعد تو متد Application_Start فراخوانی بشه : Injector.Inject
    • فرهاد شربیانی در ۱۳۹۴/۰۳/۱۲ ۱۷:۷
      بله همینطور است. ضمنا من از container یک singleton می‌سازم تا در سراسر برنامه اگر نیازی به container داشتم از همان وهله استفاده کنم.
      public  class DependencyInjectionConfig
          {
              public static void Initialize()
              {
                  ObjectFactory.Container.RegisterControllers();
                  ObjectFactory.Container.Register<IUnitOfWork, DBEntities>(new PerRequestLifeTime());
                  
                  //تعریف وابستگی‌های دیگر
      
                  ObjectFactory.Container.EnableMvc();
              }
          }