【问题标题】:Property name in Bindings case insensitive?绑定中的属性名称不区分大小写?
【发布时间】:2014-10-14 09:54:39
【问题描述】:

我正在调试一段代码,令我惊讶的是,以下几行都正确。

Binding binding = new Binding("Text", myObject, "PropertyName");

Binding binding = new Binding("Text", myObject, "propertyname");

似乎属性名称不区分大小写,但我找不到任何相关信息。

谁能告诉我我是否遗漏了什么,或者这背后的原因是什么?

【问题讨论】:

    标签: c# .net winforms data-binding


    【解决方案1】:

    我不知道它在哪里记录,但它确实在 the source 中。

    它使用StringComparison.OrdinalIgnoreCase 将绑定中的属性名称与实际对象的属性进行比较:

    if( tempPropInfo==null
        &&
        String.Equals (propInfos[i].Name, propertyName, StringComparison.OrdinalIgnoreCase)
      )
      {
      }
    

    【讨论】:

    • 有趣的发现。看着代码,我不禁想知道当给一个类添加四个属性时会发生什么可怕的事情:FooBar、fooBar、Foobar 和 foobar。并将绑定设置为:FOOBAR
    • @ErnodeWeerd:确实如此。那会破坏整个系统。不知道他们为什么这样做,也许是为了那些 VB.NET 用户?
    • @ErnodeWeerd:这正是我认为我错过了什么的原因。但是现在我还是想知道为什么会这样实现。
    • @Marco:给设计团队打个电话;)
    • 希望是多余的:我不建议只有大小写不同的公共属性/字段...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2016-11-24
    • 2013-07-04
    • 1970-01-01
    • 2018-07-11
    • 2012-05-24
    相关资源
    最近更新 更多