1

我有一个带有两个参数的对象,需要使用配置文件通过 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");

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

4

1 回答 1

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);
于 2009-09-19T10:19:22.097 回答