如何从组件注册表browser:resource
中获取所有注册信息?browser:resourceDirectory
我查看了不同的地方,试图发现 zcml 指令创建了什么样的组件,browser:resource
并通过调用找到Products.Five.browser.metaconfigure
了registerAdapter
:
handler('registerAdapter', factory, (layer,), Interface, name, _context.info)
这意味着它将注册一个需要(layer,)
和提供的适配器Interface
,但调用以下内容不起作用(它返回一个不是浏览器资源的组件):
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
zope.component.getAdapters((IDefaultBrowserLayer,), Interface)
我不确定,但似乎getAdapters
需要一个实例。我不想查询 zope.component 而是要获得注册的适配器。
我找到了zope.interface.interfaces
一个lookupAll(required, provided)
看起来像我想要的方法,但我找不到它的实现位置,所以我不知道如何调用它。