2009-04-21 97 views
0

說我有喜歡的XML文件:如何在運行時設置對象的各種屬性?

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

如何設置的BlurSharpen等特性,而不影響性能?我認爲反射會起作用,但節點和屬性的數量將達到數百萬,所以IMO的反射成本會非常高。

所以說,我得到這樣的屬性列表:

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

我怎樣稱呼他們已經初始化的對象?

我也可以選擇將它們傳遞給可選參數,因爲我將在讀取它時從xml構造對象。

回答

4

在.NET中使用內置的XML序列化。如果您遇到性能問題,請考慮使用SGEN.exe預生成解析器。

XML Serializer in .NET

XML Serializer Generator Tool (Sgen.exe)

如果你分析你自己,如果你保持的PropertyInfo對象周圍反射並不十分昂貴。

最後,您可以編寫自己的解析器...但實際上,.NET給出的XML序列化工作非常糟糕。

+0

預生成XML序列化程序集對運行時性能不起作用,只改善啓動/首次使用時間。 – 2009-04-21 18:07:13