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 查看您所指方法的实际代码。
据我所知,抽象方法只能存在于抽象 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 查看您所指方法的实际代码。