2009-06-08 8 views

Antwort

1

Nur um zu verdeutlichen: Diese Eigenschaft ist für ein Objekt mit einem Feld, das ein XmlDocument ist, und Sie möchten, dass es mit einem leeren XmlDocument mit dem Stammelement "resources" initialisiert wird.

XmlDocuments sind nicht immer die einfachsten Objekte, mit denen man arbeiten kann, besonders wenn es um die Konstruktion geht.

Frühling wird sicher nicht wissen, wie man eine Zeichenkette in ein XmlDocument dreht.

Sie könnten es einfacher finden, Code zu verwenden, um das gewünschte XmlDocument zu generieren. Erstellen Sie beispielsweise eine statische Hilfsmethode, die das XmlDocument generiert, und legen Sie den Wert der Eigenschaft fest, indem Sie diese Methode aufrufen.

Eine andere Option (kludge-y) ist eine "helper" -Eigenschaft, die sich mit xml als String beschäftigt. Zum Beispiel eine Eigenschaft namens "_ResourcesXml", die Sie auf null oder "" setzen würden. Die Eigenschaft würde dann das XmlDocument erstellen und das Hintergrundfeld für die Resources-Eigenschaft festlegen. In ähnlicher Weise könnte das Lesen von _ResourcesXml Resources.OuterXml zurückgeben.

0

Ich glaube, Sie können die angeforderte Ergebnis mit so etwas wie dies erreichen (mit dem 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> 

Wie auch immer, dies für den kleinen Effekt sehr komplex scheint man bekommt. Wie Nader bereits erwähnt hat, ist es eine gute Idee, eine kleine Hilfsfabrik zu erstellen.

Eine andere Option ist expressions zu verwenden. Sie können die Methoden innerhalb der Konfiguration aufrufen, z. wie folgt:

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