在delphi中,我可以这样声明一个类的类
type TFooClass = class of TFoo; TFoo=class end;
这个声明的C#相当于哪个?
解决方法
C#中最接近的是Type类型,它包含有关类型的元数据.
public class A { } public static int Main(string[] args) { Type b = typeof(A); }
这不完全一样.在Delphi中,“othertype的类型”本身就是一个可以分配给变量的类型.在C#中,“typetype”是一个System.Type实例,可以分配给System.Type类型的任何变量.
例如,在Delphi中,您可以这样做:
type TAClass = class of TA; TA = class public class procedure DoSomething; end; var x : TAClass; begin x := TA; x.DoSomething(); end;
在C#中你不能这样做您不能从碰巧持有typeof(A)的类型的实例调用类型A的静态方法,也不能定义一个只能保存typeof(A)或派生类型的变量.
(Delphi元类类型使用的一些特定模式可以使用泛型:
public class A { } public class ListOfA<T> where T: A { }
在这种情况下,T是“类型A”或任何派生类A用于构造类.