Như chủ đề nói, thực sự! Họ làm gì?"ForwardedTypes" trong bối cảnh đăng ký thành phần Castle Windsor là gì?
Trả lời
loại chuyển tiếp cho phép bạn có nhiều hơn một dịch vụ được thực hiện bởi một thực hiện duy nhất, cho một ví dụ cụ thể nói rằng chúng ta có hai giao diện để làm việc với các nút cây của một số loại:
public interface INodeAlterationProvider { ... }
public interface IChildNodeListProvider { ... }
Và các thành phần khác nhau tham gia một phụ thuộc vào một hoặc cả hai giao diện đó. Tuy nhiên trong việc thực hiện mỗi người giao diện bạn khám phá ra rằng họ là rất nhiều chức năng chia sẻ và muốn kết hợp việc triển khai thành một lớp duy nhất cùng với một số tính năng khác nói như:
public class NodeFactory : INodeAlterationProvider, IChildNodeListProvider { ... }
Bạn có thể đăng ký hai trường hợp của NodeFactory, một cho mỗi dịch vụ mà họ thực hiện:
container.Register(Component.For<INodeAlterationProvider>().ImplementedBy<NodeFactory>());
container.Register(Component.For<IChildNodeListProvider>().ImplementedBy<NodeFactory>());
Nhưng điều này có khả năng có thể có nghĩa hai trường hợp singleton của NodeFactory tồn tại - không lý tưởng, đặc biệt là nếu nó tốn kém để xây dựng - và có thể làm cho gỡ lỗi, vv khó hiểu, đặc biệt là nếu có hơn hai giao diện đang được triển khai.
Đây là nơi mà các loại chuyển tiếp bước vào, cho phép bạn chuyển tiếp nhiều dịch vụ để thực hiện tương tự, đây là một ví dụ về làm điều đó:
container.Register(Component.For<INodeAlterationProvider>().Forward<IChildNodeListProvider>().ImplementedBy<NodeFactory>());
Lưu ý: mã số đăng ký phần đưa ra ở đây chỉ có sẵn trên thân cây .
- 1. Đăng ký thành thạo Windsor Castle - Chọn gì() làm gì?
- 2. Hỗ trợ Castle-Windsor ForwardedTypes qua cấu hình XML
- 3. Castle Windsor: Cách tốt nhất để đăng nhập khi một thành phần được đăng ký?
- 4. Chỉ định trường hợp đăng ký thành phần với Castle Windsor
- 5. Trong Castle Windsor, tôi có thể đăng ký thành phần Giao diện và nhận ủy quyền thực hiện không?
- 6. Nhật ký nội bộ cho Castle Windsor
- 7. Castle Windsor: Cách kiểm tra tất cả các thành phần đã đăng ký có thể giải quyết được không?
- 8. Castle Windsor: có cách xác thực đăng ký mà không có cuộc gọi giải quyết không?
- 9. Castle Windsor InternalsVisibleTo Silverlight
- 10. Castle Windsor - thực hiện nhiều giao diện
- 11. Thử nghiệm ánh xạ chibernate Castle Windsor trong httpModules không được đăng ký
- 12. Nhiều kiểu trang trí trong castle-windsor
- 13. Liệt kê tất cả các loại được đăng ký với một thùng chứa Castle Windsor
- 14. Có cách nào đơn giản để đăng ký đóng cửa tĩnh với Castle Windsor?
- 15. Castle Windsor: chặn ngoại lệ do Resolve()
- 16. Castle Windsor IOC: Truyền tham số hàm khởi tạo cho các thành phần con
- 17. Snapshots với container con Castle Windsor
- 18. Castle Windsor: Thành phần tạm thời của tôi có bị thu gom rác không?
- 19. Windsor Castle/DI và mô hình đối tượng
- 20. Castle Windsor 3 với đối số hàm tạo là chuỗi
- 21. Castle Windsor Giải quyết tại thời điểm chạy
- 22. Castle Windsor: Tự động đăng ký các loại từ một hội đồng thực hiện giao diện từ một số khác
- 23. Làm thế nào để bắt đầu với Castle-Windsor?
- 24. Làm thế nào để tiêm UrlHelper trong MVC sử dụng Castle Windsor
- 25. Castle Windsor 3.0, Dịch vụ và Nhiều triển khai
- 26. Castle Windsor - đối số hàm tạo Null
- 27. Vứt bỏ ViewModels trong Caliburn Micro and Castle Windsor
- 28. 3 loại bối cảnh ràng buộc là gì?
- 29. Đăng ký% eiz là gì?
- 30. Thiết kế - Trường hợp đối tượng cần được đăng ký khi sử dụng Windsor
Cảm ơn - điều đó giải thích nó là gì. Tuy nhiên, dựa trên đó, nó có mùi giống như một phím tắt để không thực hiện tái cấu trúc "thích hợp" để hợp nhất hai dịch vụ ...? –
Cũng có thể là một mùi trong ví dụ mà tôi đã cung cấp, tôi đã nghĩ ra điều đó ... một ví dụ có thể giống như IExtendedLoggerFactory mở rộng ILoggerFactory và được thực hiện bởi một lớp duy nhất thỏa mãn cả hai giao diện. – Bittercoder
Ah; vâng, tôi có thể thấy điều đó. Tôi đã thực sự nói chuyện của Mike Hadlow trên IoC/Windsor đêm qua và phát hiện ra một số điều về thân cây ở đó, quá :) –