2010-04-12 18 views
7

Anladığım kadarıyla IServiceLocator gerçek IoC konteynerini soyutlamak için bir arabirim mi? replace Unity with Prism'a çalıştığım Prism ile ilişkiyi soruyorum ve IServiceLocator'a dayanan Prism sınıflarını görüyorum. Birisi arayüzün rolünü ve ne zaman kullanıldığını açıklayabilir mi?IServiceLocator arabirimi nedir?

Ayrıca; Common Service Locator nedir ve IServiceLocator ile çalışırken bu yararlı olur mu?

cevap

12

IServiceLocator, bir hizmet bulucunun bir özetidir. IoC konteynırları servis konum belirleyicilerinin birer türü olup, bunlar IServiceLocator tarafından temsil edilebilir. Bununla birlikte, servis lokasyon modeli, saf bağımlılık enjeksiyon modelinden daha müdahaleci olduğundan, mümkün olan her zaman lehte çalışmayı denemelisiniz.

CommonServiceLocator, IServiceLocator arabirimini ve ortak arabirimi tanımlamak ve IoC kaplarının IServiceLocator bağdaştırıcısını tanımlamasına yardımcı olmak için bu arabirimin soyut bir uygulamasını sağlar (her büyük IoC kabı böyle bir bağdaştırıcı sağlar).

Ayrıca bakınız:

+0

Thx! İyi cevap. Ancak Ninject için bir IServiceLocator bağdaştırıcısı bulamıyor, ancak büyük olarak kabul edilmiyor? (ref * (her büyük IoC konteynırı böyle bir adaptör sağlar) *) – stiank81

+0

bkz. http://github.com/enkari/ninject/tree/2.0.0.0/src/CommonServiceLocator.NinjectAdapter/ –

+0

Cool - thx. Zaten aynı şeyi kendim yazdım bile .. – stiank81