哪个 C# 声明等效于 Delphi "class of "(类的类型)?



在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中,"其他类型的类型"本身就是一种可以分配给变量的类型。在C#中,"其他类型的类型"是一个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)Type实例中调用类型A的静态方法,也不能定义只能包含typeof(A)或派生类型的变量。

(Delphi元类类型用于的一些特定模式可以使用泛型来实现:

public class A { }
public class ListOfA<T> where T: A { } 

在这种情况下,T是"A的类型"或任何用于构造类的派生类。)

相关内容

最新更新