gpt4 book ai didi

c# - 尴尬的继承问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:17 26 4
gpt4 key购买 nike

情况:
- 我有一个继承自 System.Windows.Controls.ItemsControl
的第三方控件- 我有一个名为 foo
的控件实例- foo 有一个 ListCollectionView 数据源,其中包含 5 个项目且没有过滤器。
- foo.Items.Count 给出的结果为 0
- (System.Windows.Controls.ItemsControl)(foo)).Items.Count of 5

发生这种情况的地方:
- XAML.cs 文件的构造函数

发生这种情况时:
- 在 xaml.cs 文件的构造函数中
- 在 InitializeComponent 之后

未经证实的说法:
- 第三方控件的所有者声称它不会以任何方式覆盖项目。

问题:
- 为什么 foo.Items.Count 返回的值与 (System.Windows.Controls.ItemsControl)(foo)).Items.Count 不同

最佳答案

听起来他们已经重新声明了属性(property),即

public new SomeContainer Items { get { ... } }

有时这样做是为了使.Items(等)的类型更具体;但是,它确实会破坏继承,除非注意重写底层实现。关于他们的声明 - 如果以上内容是正确的,那么他们确实没有以任何方式覆盖它;他们正在重新声明它(这可能取决于您对“覆盖”的字面意思)。

但是:您可以在任何反射工具或 IL 检查工具中检查这一点,只需查看属性的声明方式即可。是否有 newnewslot

关于c# - 尴尬的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com