Spring.NET创建带参数的对象

时间:2009-09-18 15:42:34

标签: c# .net dependency-injection spring spring.net

我有一个带有两个参数的对象需要通过Spring.NET使用配置文件进行解耦来创建。

public Object(string param1, string param2) { ... }

这两个参数是根据用户交互动态传入的,它们传递用户名和密码,因此这些值不能硬编码到配置文件中。因此,以下方法无效:

<object name="WinFormApplicationWorkflow" type="COM.Us.Workflow.ApplicationWorkflow, "COM.Us.Workflow ">
<!-- this will NOT work -->
  <constructor-arg index="0" value="TESTUSER"></constructor-arg>
  <constructor-arg index="1" value="TESTPW"></constructor-arg>
  <!-- / -->        
  <property name="NetworkWorkflow" ref="NetworkWorkflow" />
  <property name="ExceptionLogger" ref="ExceptionLogger" />
</object>

我如何使用Spring.NET执行此操作,以便我可以这样做:

ContextRegister.GetContext().GetObject("WinFormApplicationWorkflow");

但仍然将两个必要参数传递给我的工作流类。

1 个答案:

答案 0 :(得分:2)

您可以使用 Spring.Objects.Factory.IObjectFactory 接口的重载方法GetObject(string,object [])来传递动态值以进行对象创建。

string userName = "Test";
string password = "Test";
object[] arguments = new object[] { userName, password };

ContextRegister.GetContext().GetObject("WinFormApplicationWorkflow", arguments);