Interface Queries
Operation of obtaining an interface from an object with .As<>, Query<> is called Simple Query. Example:
ICircle_DG iCircle; //... Initialise etc.
ICurve_DG iCurve = iCircle.As<ICurve_DG>(); // Circle is a curve
IObjectGenerator_DG gen = iModel.Query<IObjectGenerator_DG>();
Query<> and As<> operators are identical in behaviour.
Calls to a method returning an interface like IEntity_DG iEntity = m_iModel.GetEntityAt(0); are called simple queries as well
Normally to get access to a specific functionality it is
needed to traverse several levels in the hierarchy
of interfaces.
Such a
sequence of simple queries is called extended query (or just query). Its
description in textual form is called query path.
Example of a query path: DG Kernel > GetModel()
> IModel_DG > GetEntityAt() > IEntity_DG
In some rare situations, the result of a query can depend on the query path. Such queries are called Context-Dependent Query. Description of specific interfaces describes situations when the interface
can be involved in a context-dependent query. Context-dependent queries should
be carried out without any other queries from the involved interfaces.
|