什么是 D-Bus 对象树?

What is D-Bus Object Tree?

我已阅读大量 D-Bus 文档并理解各种概念,例如:

1. Object
2. Interface
3. Method
4. Signal
5. Bus Connection
6. System vs Session Daemon

然而,在阅读 ObjectManager::GetManagedObjects 时,我遇到了 "Object Tree" 这个概念。我知道当我在服务对象上调用上述方法时,它为我提供了树中以服务对象为根的所有接口(因为服务对象实现了来自 D-Bus 的 ObjectManager 接口)。

我希望有人能非常清楚地解释当一个对象出现时到底意味着什么"under"“对象树”中的根对象

  1. 子对象只是父对象的属性吗?
  2. 子对象是否继承父对象(就像 OOP)

什么是 D-Bus 对象树?请!

对象树的语义由提供它的特定服务决定。按照惯例,对象在树中的位置仅由它们的对象路径决定。例如,/org/freedesktop/Accounts/User1000 被认为是 /org/freedesktop/Accounts 的“子对象”。但是,除此之外没有任何正式关系。

回答您的具体问题:

  • 子对象只是父对象的属性吗?不,它们是具有自己的一组属性的独立对象。他们与父级唯一的共同点是他们的对象路径上的前缀。
  • 子对象是否继承父对象(就像 OOP 一样)?不。它们可以实现相同的接口、不同的接口或介于两者之间的任何接口。通常,它们会实现不同的接口——父对象实现“管理器”接口而子对象实现“项目”接口是很常见的,用于描述项目集合。