Tôi là một chút của một newbie DI, vì vậy tha thứ cho tôi nếu đây là cách tiếp cận sai hoặc một câu hỏi ngớ ngẩn.Tôi nên đặt các tham số ctor của mình cho DI/IOC như thế nào?
Giả sử tôi có biểu mẫu tạo/cập nhật đơn đặt hàng và tôi biết rằng cần phải truy xuất danh sách sản phẩm và khách hàng để hiển thị. Tôi muốn truyền vào đối tượng Order mà nó đang chỉnh sửa, nhưng tôi cũng muốn đưa ProductService và CustomerService làm phụ thuộc.
Vì vậy, tôi sẽ muốn container IoC của tôi (tùy theo cái nào tôi đi cùng) để cung cấp dịch vụ, nhưng nó sẽ tùy thuộc vào mã gọi để cung cấp đối tượng Order để chỉnh sửa.
Tôi có nên khai báo constructor như chụp các đối tượng theo thứ tự như tham số đầu tiên và ProductsService và CustomersService sau đó, ví dụ:
public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)
... hoặc các phụ thuộc nên đến đầu tiên và đối tượng theo thứ tự cuối cùng, ví dụ:
public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)
Có sao không? Liệu nó phụ thuộc vào container IoC tôi sử dụng? Đây có phải là cách tốt hơn không?
Ok, điều này có ý nghĩa. Vì vậy, hoặc là tôi sử dụng tiêm tài sản cho tất cả các phụ thuộc của tôi, hoặc CHỈ vượt qua phụ thuộc vào ctor và giới thiệu một tài sản cho các "cần thiết" đối tượng? –
Vâng, bạn nói đúng. Đừng trộn DP và các thuộc tính bình thường vì nó có thể dẫn đến các vấn đề không được dự đoán và giới hạn phạm vi của các khung công tác IoC phù hợp. – aku