Classes that implement interfaces can use the as operator for dynamic binding on the interface. In the following example,
procedure PaintObjects(P: TInterfacedObject) var X: IPaint; begin X := P as IPaint; { statements } end;
the variable P of type TInterfacedObject, can be assigned to the variable X, which is an IPaint interface reference. Dynamic binding makes this assignment possible. For this assignment, the compiler generates code to call the QueryInterface method of P's IInterface interface. This is because the compiler cannot tell from P's declared type whether P's instance actually supports IPaint. At runtime, P either resolves to an IPaint reference or an exception is raised. In either case, assigning P to X will not generate a compile-time error as it would if P was of a class type that did not implement IInterface.
When you use the as operator for dynamic binding on an interface, you should be aware of the following requirements:
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|