【问题标题】:System.Windows.PropertyPath - can this class help me with reflection on deep-nested properties (types)?System.Windows.PropertyPath - 这个类可以帮助我反思深层嵌套的属性(类型)吗?
【发布时间】:2011-09-01 14:51:36
【问题描述】:

我最近一直在讨论反射这个话题,主要是为了实例化一个新类并在字段上设置属性..通过路径...... 例如,我可能有一个名为 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 密切相关)?

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

【问题讨论】:

  • 为什么不能使用 FastReflection 设置嵌套类型的值?如果您直接使用Expressions 应该可以。
  • 是的。我想我可以 - 只需要弄清楚如何正确地做...... :)
  • 那你为什么不问一个问题呢?

标签: data-binding reflection c#-4.0 system.reflection propertyinfo


【解决方案1】:

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

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

它不会为这么多对象提供速度提升,我怀疑它是否能解决您的问题。

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2021-08-21
    • 2022-06-10
    • 2015-11-30
    • 2013-05-18
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多