我最近一直在讨论反射的话题,主要是为了实例化一个New类并在字段上设置属性。通过路径…例如,我可能有一个名为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
密切相关)?
我希望我的问题很清楚,不要太混乱,我将感谢任何提示,建议…
简短的回答是否定的。WPF绑定系统使用PropertyPath将DependencyProperties绑定到其他属性(依赖属性或常规属性)。当绑定到依赖项属性时,绑定系统可以使用属性路径来使用WPF元数据解析绑定属性。当绑定到CLR属性时,它必须使用。net反射来解析该属性。
在这两种情况下,它通常不用于设置CLR属性,但它可以用于双向绑定。
它不会为那么多对象提供速度提升,我怀疑它是不是解决你问题的方法。