2

我一直在考虑 IApplicationContext.GetObject(string name) 方法,它似乎相当依赖魔术字符串来从应用程序上下文中获取对象。使用StructureMap等其他容器,您可以使用泛型来指定配置和请求对象,但有没有比使用带有 Spring.Net IoC 容器的字符串从 ApplicationContext 请求对象更好的方法?

4

2 回答 2

2

Spring通过适配器支持CommonServiceLocator。此接口具有您期望的 API,并且您还可以针对公共服务定位器进行编译,因此您可以根据需要切换 IoC 容器,而无需修改现有代码。

于 2010-07-08T11:11:03.257 回答
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 容器好,但至少你会得到某种编译器支持。

于 2009-08-25T14:11:42.387 回答