我有一个带有两个参数的对象需要通过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");
但仍然将两个必要参数传递给我的工作流类。
答案 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);