我是 spring.net 的新手,我正在尝试创建一个 List<> 对象。该列表由一个循环初始化,该循环调用:
IObj obj= (IObj)ContextRegistry.GetContext().GetObject("obj")
更改对象属性....
将其添加到列表中...
问题是:我在循环的每一步都得到相同的对象,所以我得到了相同对象的列表
我是 spring.net 的新手,我正在尝试创建一个 List<> 对象。该列表由一个循环初始化,该循环调用:
IObj obj= (IObj)ContextRegistry.GetContext().GetObject("obj")
更改对象属性....
将其添加到列表中...
问题是:我在循环的每一步都得到相同的对象,所以我得到了相同对象的列表
如果您的对象定义不是单例,那么您每次都会得到一个新对象。请注意,默认情况下,单例设置为 true,因此您必须明确将其设置为 false。
例如,如果您使用 xml 文件来配置对象,请将单例属性设置为 false:
<object name="name" type="..." singleton="false"/>
目前尚不清楚您通过循环“GetObject("obj")" 方法来实现什么。也许你可以发布循环代码?
"GetObject("obj")" 的作用是向容器询问名称为 "obj" 的对象。您声明要更改对象的属性并将其添加到列表中。这是容器可以为您做的事情: 设置对象的属性 : http ://www.springframework.net/doc-latest/reference/html/objects.html#objects-simple-values 创建列表: http: //www.springframework.net/doc-latest/reference/html/objects.html#objects-collections-values
该列表可以注入到您选择的对象中。
如果您只想要 IObj 的非单例对象,naders 的答案是正确的。Spring 将这些非单例对象称为“原型”。可以在此处找到可用范围的概述:http ://www.springframework.net/doc-latest/reference/html/objects.html#objects-factory-scopes