2009-01-25 30 views
7

'da kaydedilmiş olup olmadığını sınama Bir özünürlük çözümlenmesi ve özel durumun yakalanması için bir tür kapsayıcıda bir tür kaydedilmiş olup olmadığını sınayabilir miyim?Bir Türün Unity

cevap

12

Unity 2.0, kapsayıcıda bir türün kayıtlı olup olmadığını öğrenmek için kullanabileceğiniz bir IsRegistered yöntemine sahip olacaktır.

Unity 2.0 b1 Feb 10th itibarıyla Codeplex kullanılabilir. Sürüm notlarına bakın ve buradan indirin; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1

GÜNCELLEME:

İndirilen ve test Birlik 2.0 Şubat 27 2010 beta 1 ve henüz hazır uzak üretimiyle bu. Unity 1.2'yi bugün kullanıyorsanız, eksik (?) IUnityContainer arabirimi nedeniyle Unity 2.0'ı çalıştırmak için bazı önemli işleri yapmanız gerekecektir. Burada ResolveAll kullanmıyorum

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

Not: Bugün çalışan IsRegistered yöntemi yapmak istiyorsanız Yani, böyle bir uzantısı yöntemi yapabilirsiniz. Bunun nedeni ResolveAll varsayılan döndürmez olmasıdır Birlik docs belirtilen (un adlandırılmış) kayıt: Aynı Tip ancak farklı isimlerle birden fazla türde kayıtlı verdiyseniz

bu yöntem kullanışlıdır.

Bu yöntemin, varsayılan (adsız) kayıt için bir örnek döndürmediğini unutmayın.

+0

Güncelleme için teşekkürler. – johnc

2

Sadece diğer (şu anda) ResolveAll<T>() kullanmak ve sonuçları ortaya çıkarmaktır.

+0

Şüpheli, teşekkürler – johnc