2009-06-08 21 views

回答

1

只是为了说明:该属性位于具有XmlDocument字段的对象上,并且您希望将其初始化为具有根元素“resources”的空XmlDocument。

XmlDocuments并不总是最简单的工作对象,特别是在构建时。

Spring肯定不知道如何将字符串转换为XmlDocument。

您可能会发现使用代码更容易生成所需的XmlDocument。例如,创建一个生成XmlDocument的静态帮助器方法,并通过调用该方法来设置该属性的值。

另一个(kludge-y)选项是将xml作为字符串处理的“helper”属性。例如,一个名为“_ResourcesXml”的属性可以设置为null或“”。然后,该属性将构建XmlDocument并为“资源属性”设置后台字段。同样,阅读_ResourcesXml可能会返回Resources.OuterXml。

0

我想你可以实现与这样的请求的结果(使用MethodInvokingFactoryObject):

<object id="Document" type="System.Xml.XmlDocument, System.Xml" /> 
    <object type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core"> 
    <property name="TargetObject"> 
     <ref local="Document" /> 
    </property> 
    <property name="TargetMethod" value="AppendChild" /> 
    <property name="NamedArguments"> 
     <dictionary> 
     <entry key="newChild"> 
      <object type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core"> 
      <property name="TargetObject"> 
       <ref local="Document" /> 
      </property> 
      <property name="TargetMethod" value="CreateElement" /> 
      <property name="NamedArguments"> 
       <dictionary> 
       <entry key="name" value="resources" /> 
       </dictionary> 
      </property> 
      </object> 
     </entry> 
     </dictionary> 
    </property> 
    </object> 

无论如何,这似乎是你所得到的效果不大很复杂。正如Nader已经提到,创建一个小帮手工厂是个好主意。

另一种选择是使用expressions。您可以在配置中调用方法,例如如下:

<object id="..." type="..." expression="@(Document).CreateElement('resources')" />