Unity có thể tự động giải quyết IEnumerable<T>
không?Giải quyết IEnumerable <T> với Unity
Hãy nói rằng tôi có một lớp với constructor này:
public CoalescingParserSelector(IEnumerable<IParserBuilder> parserBuilders)
và tôi cấu hình trường IParserBuilder cá nhân trong container:
container.RegisterType<IParserSelector, CoalescingParserSelector>();
container.RegisterType<IParserBuilder, HelpParserBuilder>();
container.RegisterType<IParserBuilder, SomeOtherParserBuilder>();
tôi có thể làm công việc này mà không cần phải thực hiện một cài đặt tùy chỉnh của IEnumerable<IParserBuilder>
?
var selector = container.Resolve<IParserSelector>();
Cho đến nay tôi chưa thể diễn đạt điều này theo cách đơn giản, nhưng tôi vẫn đang tăng cường Unity vì vậy tôi có thể đã bỏ lỡ điều gì đó.
Giải pháp tuyệt vời! Điều này tốt hơn tất cả các tùy chọn khác. – Jehof
Và để điền vào IEnumerable để xây dựng tiêm (mà tôi hy vọng để xem trong câu trả lời ở đây), xin vui lòng tham khảo câu hỏi sau đây. http://stackoverflow.com/questions/6304355/way-to-fill-collection-with-unity –
Quá xấu, bạn cần thêm đăng ký mới cho từng loại. Nếu chỉ có một cái gì đó đơn giản như 'container.RegisterType (GetType (IEnumerable (Of)), GetType (Array (Of)))' – Kurren