我最近遇到了一些例子,它们使用抽象类作为接口,但也将工厂构造函数添加到抽象接口中,以便在某种意义上可以“更新”起来。service = new WidgetService();
根据我对此示例的理解,上面这行代码本质上是“新建”了一个WidgetService,这通常会从Dart分析器中生成一个警告,并表示服务变量实际上是基于将ConcreateWidgetService分配给WidgetService的工厂构造函数的Concreat
这对于许多抽象类(可能是所有的,我还没有检查过)都显示出来了。在我看来,它们中的大多数都没有新的方法,所以我假设是编译器添加了一个默认的方法。因此,为了删除它,我添加了一个私有默认构造器(Private Sub New()),这意味着所有继承类都无法构建,并返回错误:Class 'InheritingClass' has no accessible这看起来很奇怪,因为FxCop不需要公共构造函数,但是当我删除它时,构建会失败。