我一直在考虑IApplicationContext.GetObject(字符串名称)方法,它似乎非常依赖魔术字符串来从应用程序上下文中获取对象。对于像StructureMap这样的其他容器,您可以使用泛型来指定配置和请求对象,但是使用Spring.Net IoC容器的字符串来从ApplicationContext请求对象有更好的方法吗?
答案 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好,但至少你会得到某种编译器支持。