Spring.Net IoC和Magic Strings

时间:2009-07-10 04:04:36

标签: inversion-of-control ioc-container spring.net

我一直在考虑IApplicationContext.GetObject(字符串名称)方法,它似乎非常依赖魔术字符串来从应用程序上下文中获取对象。对于像StructureMap这样的其他容器,您可以使用泛型来指定配置和请求对象,但是使用Spring.Net IoC容器的字符串来从ApplicationContext请求对象有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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 contatiner好,但至少你会得到某种编译器支持。