2009-04-21 14 views
0

Sagen, ich habe eine XML-Datei wie:Wie können verschiedene Eigenschaften eines Objekts zur Laufzeit eingestellt werden?

<Filters> 
    <Blur Name="Blur01" /> 
    <Sharpen Name="Sharpen01" Amount=5 /> 
</Filters> 

Wie kann ich die Eigenschaften von Blur, Sharpen, etc ohne Performance-Einbußen? Ich dachte Reflexion würde funktionieren, aber die Anzahl der Knoten und Eigenschaften wird in Millionen sein, so dass die Reflexionskosten sehr hoch wären IMO.

Also sage ich eine Liste von Eigenschaften wie erhalten:

{ "Name", "Amount", ... } 

Wie kann ich sie auf einem bereits initialisiert Objekt aufrufen?

Ich habe auch die Option, sie an optionale Argumente übergeben, wie ich die Objekte aus dem XML zum Zeitpunkt des Lesens konstruieren werde.

Antwort

4

Verwenden Sie die integrierte XML-Serialisierung in .NET. Wenn Sie Leistungsprobleme haben, sollten Sie die Parser mit SGEN.exe vorgenerieren.

XML Serializer in .NET

XML Serializer Generator Tool (Sgen.exe)

Wenn Sie sich selbst analysieren, ist die Reflexion nicht sehr teuer, wenn Sie die Property halten Objekte um.

Schließlich könnten Sie einfach Ihren eigenen Parser schreiben ... aber in Wirklichkeit funktioniert Ihre XML-Serialisierung, die .NET gibt, ziemlich gut.

+0

Das Vorgenerieren von XML-Serialisierungsassemblys führt nicht zur Laufzeitleistung, sondern verbessert nur die Start-/Erstnutzungszeit. –

+0

@Anton Das erste Mal, dass Sie es pro Ausführung verwenden, ist das. Wie ist das nicht Laufzeit? –

+0

Dank Anton, kann ich die XML-Serialisierung zum Festlegen der Eigenschaften von Objekten verwenden? –

Verwandte Themen