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