2009-01-25 25 views

Trả lời

12

Unity 2.0 sẽ có phương thức IsRegistered mà bạn có thể sử dụng để tìm hiểu xem loại đã được đăng ký trong vùng chứa hay chưa.

Bản Beta1 của Unity 2.0 khả dụng trên Codeplex từ ngày 10 tháng 2. Xem ghi chú phát hành và tải xuống ở đây; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1

UPDATE:

Downloaded và thử nghiệm Unity 2.0 beta 1 trên ngày 27 tháng 2 năm 2010, và đó là bởi sản xuất đến nay đã sẵn sàng chưa. Nếu bạn đang sử dụng Unity 1.2 ngày hôm nay bạn sẽ phải làm một số công việc lớn để có được Unity 2.0 làm việc vì giao diện IUnityContainer không đầy đủ (?). Vì vậy, nếu bạn muốn có phương pháp IsRegistered ngày nay làm việc, bạn có thể thực hiện một phương pháp khuyến nông như thế này:

public static class UnityContainerExtensions 
{ 
    public static bool IsRegistered<T>(this IUnityContainer container) 
    { 
     try 
     { 
      container.Resolve<T>(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
} 

Lưu ý rằng tôi không sử dụng ResolveAll đây. Lý do cho điều này là ResolveAll sẽ không trả lại đăng ký mặc định (chưa được đặt tên) như đã nêu trong tài liệu Unity:

Phương pháp này hữu ích nếu bạn đã đăng ký nhiều loại có cùng tên.

Lưu ý rằng phương thức này KHÔNG trả về một cá thể cho đăng ký mặc định (chưa đặt tên).

+0

Cảm ơn bạn đã cập nhật. – johnc

2

Tùy chọn duy nhất khác của bạn (hiện tại) là sử dụng ResolveAll<T>() và liệt kê kết quả.

+0

Nghi ngờ như vậy, cảm ơn – johnc

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