2012-10-04 20 views
5

Dưới đây là cấu hình NinjectHttpApplication ..Làm thế nào để có được dụ từ Ninject

public class MvcApplication : NinjectHttpApplication 
{ 
     public MvcApplication() 
     { 
      Error += NinjectWebsiteApplication_Error; 
     } 
}  

protected override IKernel CreateKernel() 
{ 
     var kernel = new StandardKernel(); 
     kernel.Load<ApplicationConfig>(); 
     return kernel; 
} 

void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
     ILogger _iLogger = **//How to get instance of Applogger here from Ninject kernel..** 
} 

Dưới đây là lớp ApplicationConfig ...

public class ApplicationConfig : NHibernateNinjectModule 
{ 

    public ApplicationConfig() 
    { 
    //other settings such as ddl script generation is present here 
    } 
    public override void Load() 
    {     
     base.Load(); 
     Bind<ILogger>().To<AppLogger>().InSingletonScope(); 
    } 
} 

Trả lời

3
void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
    var kernel = CreateKernel(); 
    ILogger _iLogger = kernel.Get<ILogger>(); 
} 

Ok, vì nó dường như NinjectHttpApplication cửa hàng tạo ra đối tượng hạt nhân in

public IKernel Kernel 
{ 
    get { return _kernel; } 
} 

Vì vậy, bạn có thể viết lại ở trên là

void NinjectWebsiteApplication_Error(object sender, System.EventArgs e) 
{ 
    ILogger _iLogger = Kernel.Get<ILogger>(); 
} 
+0

Cảm ơn bạn đã trả lời. Chúng ta có cần tạo hạt nhân lần nữa để truy cập cá thể không. Vì trong ApplicationConfig(), chúng ta có nhiều thứ khác đang diễn ra như tạo các kịch bản lệnh ddl cho ứng dụng. Vì vậy, khi sự kiện lỗi được nâng lên, CreateKernel() được gọi và tập lệnh được tạo lại. Tôi nhận ra tôi cần ví dụ này trong bộ lọc hành động quá và cố gắng với "tiêm" thuộc tính trên tài sản, nhưng lỗi tham chiếu cho đối tượng của nó. Thuộc tính inject hay thuộc tính chỉ đọc của giao diện làm việc trong trường hợp này .. – Sunny

+0

Tôi đã sửa câu trả lời của mình – archil

+0

Làm cách nào để truy cập biến _kernel. Tôi có cần một cái gì đó như thế này không? ... http://stackoverflow.com/questions/5031678/getting-started-with-ninject-in-asp-net-mvc-3 – Sunny

Các vấn đề liên quan