Microsoft 是如何做到的:静态 class 中的抽象方法?

How did Microsoft do it: Abstract method in static class?

据我所知,抽象方法只能存在于抽象 classes 中。 尽管如此,我可以看到微软这样做了(在 Xamarin.Forms):

  public static class DependencyService
  {
    ….
        public static void Register<T>() where T : class;
    ….
  }

这是 NON 抽象中的抽象方法 class。怎么可能?

This is an abstract method in a NON abstract class

没有?它不是。你从哪里得到它是一个抽象方法的想法?它是一种开放类型方法,您可以通过提供类型 (Register()) 来调用它,并且与抽象无关。

现在,你说 - 它没有 body。当然?它看起来更像是您没有看到 body 因为您无权访问代码,这可能是 "open reference" 样式代码而无法访问源代码样式(显示签名但不显示body).

抽象方法必须指定abstract关键字。 您问题中的方法签名:

public static void Register<T>() where T : class;

没有abstract关键字。

Xamarin.Forms 是一个开源项目,您可以在他们的 GitHub 存储库中查看源代码。

单击 here 查看您所指方法的实际代码。