2010-11-08 59 views
16

Tôi có một ứng dụng WinForms với Form Main này:Cách sử dụng Ninject trong ứng dụng Windows Forms?

ICountRepository countRepository; 
    public MainForm(ICountRepository countRepository) 
    { 
     this.countRepository = countRepository; 
    } 

    public void IncrementCount() 
    { 
     countRepository.IncrementCount(); 
    } 

nhưng tôi đang đấu tranh để tiêm ICountRepository vào mainform. Làm thế nào để làm điều đó ?

+0

liên quan: http://stackoverflow.com/questions/19937187/does-di-make-sense-in-a-desktop-app –

Trả lời

20

Vâng những bước đầu tiên là chuyển từ:

var form = new MainForm(); 
Application.Run(form); 

tới:

var kernel = new StandardKernel(new ModuleRegisteringICountRepository()); 
var form = kernel.Get<MainForm>(); 
Application.Run(form); 

Có lẽ một làm rõ chỉnh sửa hoặc hai về những gì đại loại như vậy bạn đang tìm kiếm để đạt được có thể giúp bạn có được một câu trả lời chi tiết hơn.


Rất khuyến khích để có được lên đến tốc độ với các mô hình xung quanh đây là cuốn sách Dependency Injection in .NET @ Mark SEEMANN (trong đó là cách nói, việc chuyển đổi trên khiến Main bạn Composition Root -. Sự (đơn) GetComposes the object graph của ứng dụng của bạn

+1

cuối cùng tôi đã thực hiện điều này bên trong phương thức chính trong tệp Program.cs – Attilah

+0

@Attillah: Đúng, có ý nghĩa –

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