我了解类层次结构和继承的基础知识。因此,我不了解 Watch 窗口为 ContentItem 对象显示的类层次结构。
似乎是说 ContentItem 继承 ContentItem 继承 ContentItem ......一直到无穷大。这是什么意思?
我了解类层次结构和继承的基础知识。因此,我不了解 Watch 窗口为 ContentItem 对象显示的类层次结构。
似乎是说 ContentItem 继承 ContentItem 继承 ContentItem ......一直到无穷大。这是什么意思?
我认为在这种特定情况下,您会看到 Orchard 独有的东西。
我下载了源代码,ContentItem 是一个动态对象,它公开了一个名为 ContentItem 的字段。很可能你看到的只是一个层次结构
PageBase > Pages > Admin Page > Components > Component > Login Component > Text > etc
我认为这个对象树比你的耐心更深。在大多数情况下,您是正确的——“基础”会将您带到超类。
该类型显示在监视列表的第三列中,MS 好心地将其推到了右侧,因此您几乎没有注意到它。第二列是“值”,确实得到了这些重复的值。
@insta 几乎是对的。ContentItem 派生自 DynamicObject,DynamicObject 派生自无(它只实现一个接口)。在任何与属性不同的具体类型的对象下,调试器首先显示与其最具体的表示相同的对象。例如,如果您查看内容项的记录属性,您会看到它的类型为 ContentItemRecord,但如果您部署它,您会在其下方看到标记为 [ContentItemRecordProxy] 的内容。然而,VS 似乎对动态类型做了一些特别的事情,它似乎对基的类型应该是什么感到困惑,所以它向您展示了 [Orchard.ContentManagement.ContentItem] 下的实际对象,它本身有一个基类,以此类推到无限和超越。您可以放心地忽略这种奇怪的行为。