2011-01-12 26 views
7

Thay vì phải ràng buộc thủ công mọi lớp, phương pháp và mẫu nào, nếu có, được khuyến nghị để tự động thiết lập các ràng buộc?Tôi có các tùy chọn nào để tự động hóa các liên kết với NInject

Ví dụ, đại đa số các cam kết ràng buộc đơn giản như thế này:

Bind<ICustomerRepository>.To<CustomerRepository>(); 

Khi module được lớn, bạn có thể kết thúc với 100s của bindings rằng tất cả trông giống hệt nhau. Điều này có thể được tự động?

Trả lời

7

séc ra phần mở rộng quy ước: https://github.com/ninject/ninject.extensions.conventions

 using (IKernel kernel = new StandardKernel()) 
     { 
      var scanner = new AssemblyScanner(); 
      scanner.From(Assembly.GetExecutingAssembly()); 
      scanner.BindWith<DefaultBindingGenerator>(); 
      kernel.Scan(scanner); 
      var instance = kernel.Get<IDefaultConvention>(); 

      instance.ShouldNotBeNull(); 
      instance.ShouldBeInstanceOf<DefaultConvention>(); 
     } 
+0

Ông có thể giải thích một chút gì đó đang làm gì? – Jon

+1

có một vài BindingGenerators khác nhau trong dự án này sẽ quét các hội đồng của bạn và tạo các ràng buộc trong Ninject dựa trên các quy ước. DefaultBindingGenerator được sử dụng trong ví dụ này tìm các giao diện có cùng tên như một thể hiện cụ thể cộng với "I". ví dụ, trong IDefaultConvention ở trên ràng buộc với DefaultConvention. đó cũng là một RegexBindingGenerator nếu bạn muốn xác định các quy tắc cho các ràng buộc, và một GenericBindingGenerator để cố gắng tự động thực hiện các đối số chung cho các kiểu. –

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