Jim Fulton wrote at 2008-8-19 17:57 -0400:
....
While I respect that this feature may have been chosen carefully, it nevertheless seems more like a misfeature. Chris' expectation was reasonable and ought not to be violated without a good cause.
queryAdapter is used to look up named adapters. It is also a simpler version of queryMultiAdapter, which looks up adapters for multiple objects. In neither of these cases does it make sense to consider the interfaces already provided by the object being adapted. It makes no sense to me for queryAdapter to have different semantics depending on whether the name argument is provided (and is non-blank).
As the "implements" directive does not specify a name, one could think that the default name is declared. Then, your naming argument would go away. As the "I(obj, ...)" syntax is more comfortable and more natural than the "get[Multi]Adapter(obj, I, ...)", it may even be adequate to give "I(...)" an optional "name" parameter. Then, we could get rid of the "{get|query}[Multi]Adapter" altogether and consistently use "I(....)" with appropriate optional parameters -- what a simplification and homogenization :-) -- Dieter