2009-07-10 69 views
2

我一直在想IApplicationContext.GetObject(string name)方法,它似乎很大程度上依賴於魔術字符串來從應用程序上下文中獲取對象。有了像StructureMap這樣的其他容器,你可以使用泛型來指定配置和請求對象,但是比使用Spring.Net IoC容器的字符串來從ApplicationContext請求對象還有更好的方法嗎?Spring.Net IoC和Magic Strings

回答

0

您可以調用一個包裝器,並使用泛型類型參數。

事情是這樣的:

public void MyMethod() 
{ 
    IMyService myService = ApplicationContextWrapper.Resolve<IMyService>(); 
} 


public static class ApplicationContextWrapper 
{ 
    public static T Resolve<T>() 
    { 
     return ApplicationContext.Resolve<T>(typeof(T).Name); 
    } 
} 

並不像某些其他的IoC contatiners一樣的好,但至少你會得到某種編譯器的支持。

2

Spring通過adapter支持CommonServiceLocator。此接口有您期望的the API,您還可以針對通用服務定位器進行編譯,以便您可以在不需要修改現有代碼的情況下切換IoC容器。