class-reference type |
Top Previous Next |
What is translated > class-reference type In Delphi methods of a class can be called without creating an instance of the class at first. That's similar to C# static methods. But in C# it is not possible to assign classes as values to variables and then to create instances of the class by calling a virtual constructor function from such a class reference. This is possible in Delphi however, as shown in the following example code:
type TBase = class end;
TBaseClass = class of TBase;
TDerived = class(TBase) end;
TDerivedClass = class of TDerived;
function make(Base: TBaseClass): TBase; begin result := Base.Create; // will create TBase or TDerived in dependence of the passed parameter end;
The variables TBaseClass and TDerivedClass are called "class references" of TBase or TDerived respectively. There is no direct counterpart to class references in C#, but if the option to create meta-classes is enabled, Delphi2C# creates a framework to simulate class references. Parallel to the existing classes, a second hierarchy of class references "ClassRef<T>" is created then and additional methods are written into the original classes, which allow to simulate the most important basic class functions as for example the Create-method. For exceptions there is another but similar hierarchy of ExceptionRef<T> classes.
|
This page belongs to the Delphi2C# Documentation |
Delphi2C# home Content |