我发现IObjectFactory.GetObject和IApplicationContext.GetObject都能实例化对象,那有什么区别?
在 Spring.NET IoC 中最核心的内容应该是 IObjectFactory、IApplicationContext、IObjectDefinition 这三个接口了。IObjectFactory 是核心容器接口,负责管理容器内的注入对象,而 IApplicationContext 则是 IObjectFactory 的继承,它扩展了一些功能。IObjectDefinition 是注入对象的定义接口,供 IObjectFactory / IApplicationContext 调用。
在使用上,通常建议直接使用IApplicationContext,而不是IObjectFactory,IObjectFactory比IApplicationContext而言主要适用仅使用容器功能的场合
教程上是
IApplicationContext ctx = new XmlApplicationContext(xmlFiles);
IObjectFactory factory = (IObjectFactory)ctx;
Console.WriteLine(factory.GetObject("PersonDao").ToString());
我改成
IApplicationContext ctx = new XmlApplicationContext(xmlFiles);
Console.WriteLine(ctx.GetObject("PersonDao").ToString());
两种代码都能得到实例化的PersonDao,所以我就迷惑了
你看下是否 IApplicationContext 有个接口方法是:GetObject(string name)
可以啊,你看我上面写的: