如何在运行时设置对象的各种属性?

时间:2009-04-21 18:02:49

标签: c# .net

假设我有一个xml文件,如:

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

如何在没有性能影响的情况下设置BlurSharpen等的属性?我认为反射会起作用,但节点和属性的数量将以百万计,因此IMO的反射成本会非常高。

所以说我得到一个属性列表,如:

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

如何在已初始化的对象上调用它们?

我也可以选择将它们传递给可选参数,因为我将在读取它时从xml构造对象。

1 个答案:

答案 0 :(得分:4)

在.NET中使用内置的XML序列化。如果遇到性能问题,请考虑使用SGEN.exe预生成解析器。

XML Serializer in .NET

XML Serializer Generator Tool (Sgen.exe)

如果你自己解析,如果你保留PropertyInfo对象,反射就不会非常昂贵。

最后,您可以编写自己的解析器......但实际上,.NET提供的XML序列化效果非常好。