Autofac có mô-đun, Windsor có Trình cài đặt và Sơ đồ Cấu trúc Bản đồ ... với Injector Đơn giản Làm thế nào tôi có thể đóng gói cấu hình logic vào các lớp tái sử dụng?Làm thế nào tôi có thể mô phỏng Mô-đun/Trình cài đặt/Đăng ký với Đầu vào Đơn giản
Tôi đã thử:
public interface IModule { }
public class FooModule : IModule
{
public FooModule(SimpleInjector.Container container)
{
container.RegisterSingleton<IBar, Bar>();
container.RegisterSingleton<IFoo, Foo>();
}
}
Và tôi sử dụng nó trong Root Thành phần:
public static void Main(string[] args)
{
var container = new SimpleInjector.Container();
container.RegisterCollection<IModule>(new FooModule(container));
...
}
Tuy nhiên, FooModule
phụ thuộc vào thùng chứa và có thể ở không phải là một thực hành tốt ... thấy http://code.google.com/p/autofac/wiki/BestPractices :
Nếu các thành phần có phụ thuộc vào vùng chứa, hãy xem cách họ đang sử dụng vùng chứa để truy xuất dịch vụ và thêm các dịch vụ đó vào các đối số của hàm tạo (phụ thuộc được tiêm) của thành phần thay thế.
Lưu ý rằng, ngay cả với Autofac- 'FooModule' của bạn sẽ phụ thuộc vào vùng chứa (hoặc với Autofac,' ContainerBuilder, vì Autofac chia thùng chứa thành hai loại). Hãy xem [tài liệu Autofac này] (http://code.google.com/p/autofac/wiki/StructuringWithModules) và bạn sẽ thấy rõ rằng các mô-đun có sự phụ thuộc này. Đối với một mô-đun, bạn chỉ cần chứa vùng chứa, nhưng điều đó không quan trọng vì một mô-đun sẽ là một phần của gốc thành phần của bạn. – Steven