1

我最近一直在讨论反射的主题,主要是为了实例化一个新类并在字段上设置属性..通过路径......例如,我可能有一个名为 Games 的类,具有公共属性 -

Game myGame = new Game()

myGame.GamingProperties.HowToPlay = "bla bla bla";
myGame.StateProperties.CreationTime = DateTime.Today;

因此,例如,我必须在属性上设置值(使用反射魔法),路径为:“GamingProperties.HowToPlay”

到目前为止,我一直在使用 Guy Mahieu 的“ PropertyReflector ”类——这正是我所需要的,但在反射/反序列化 100,000 个对象时速度很慢。

稍后我发现使用“表达式树”(以及像“ FastReflection ”这样的项目)可以更快地设置属性值是一个很好的例子。但是我现在被 FastReflection 卡住了,因为我不能在嵌套类型上正确设置值...

无论如何——问题是——是否System.Windows.PropertyPath能以某种方式帮助我解决这一切?它甚至有关系吗?也许我可以根据需要使用它,或者使用.Binding方法(与 密切相关System.Windows.PropertyPath)?

我希望我的问题很清楚,不要太混乱,我将不胜感激任何提示,建议......

4

1 回答 1

3

最简洁的答案是不。WPF 绑定系统使用 PropertyPath 将 DependencyProperties 绑定到其他属性(依赖项或常规属性)。绑定到依赖项属性时,绑定系统可以使用属性路径通过 WPF 元数据解析绑定的属性。绑定到 CLR 属性时,它必须使用 .NET 反射来解析该属性。

在这两种情况下,它通常不用于设置 CLR 属性,但可以用于双向绑定。

它不会为这么多物体提供速度提升,我怀疑它是否可以解决您的问题。

于 2011-09-01T17:27:27.710 回答