2011-02-07 39 views
5

Có thể đăng ký và giải quyết các loại mảng trong vùng chứa Unity không? Tôi muốn làm điều gì đó như thế này:Giải quyết các loại mảng trong thùng chứa Unity (Prism)

this.mContainer 
    .RegisterType<ISomeType, SomeType>() 
    .RegisterType<ISomeType[], SomeType[]>(); 
ISomeType[] lSomeTypes = this.mContainer.Resolve<ISomeType[6]>(); 

Nó sẽ là tốt hơn nếu tôi không phải đăng ký kiểu mảng, và có Unity tìm ra các mảng dựa trên RegisterType<ISomeType, SomeType>()Resolve<ISomeType[]>() một mình.

+0

Tìm thấy một số tài liệu nhưng không rõ ràng ... http://msdn.microsoft.com/en-us/library/ff660882%28v=pandp.20%29.aspx#_Toc260122621 –

Trả lời

7

Nếu bạn đăng ký nhiều loại cho một loại cụ thể (sử dụng đăng ký tên), khi container thấy phụ thuộc vào một mảng thuộc loại đó, nó sẽ tự động tiêm tất cả các đăng ký được đặt tên.

Vì vậy, đây sẽ làm việc:

this.mContainer 
    .RegisterType<ISomeType, SomeImpl1>("one") 
    .RegisterType<ISomeType, SomeOtherImpl>("other") 
    .RegisterType,ISomeType, AnotherImpl>("another"); 

ISomeType[] someTypes = mContainer.Resolve<ISomeType[]>(); 

Logic này sẽ kick vào bất cứ khi nào có một sự phụ thuộc của [] ISomeType - tham số nhà xây dựng, bất động sản tiêm vv

Lưu ý rằng tiêm mảng sẽ chỉ tiêm có tên là đăng ký. Đăng ký mặc định, chưa được đặt tên không được bao gồm trong mảng.

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