vb.net - 我可以将委托(delegate)从后代的构造函数传递到抽象类的构造函数吗?

标签 vb.net constructor delegates

我有一个抽象类,它需要委托(delegate)才能运行。我将委托(delegate)传递给构造函数。现在我有了一个非默认构造函数,我需要从具体类调用抽象类的构造函数,这意味着我需要使用 MyBase.New(...)。我在下面提供了一个简单示例。

Public MustInherit Class BaseClass
    Public Delegate Sub WorkMethod()
    Private _Work As WorkMethod

    Public Sub New(ByVal Work As WorkMethod)
        Me._Work = WorkMethod
    End Sub
End Class

Public Class ConcreteClass
    Public Sub New()
        MyBase.New(AddressOf DoSomethingHere)
    End Sub

    Public Sub DoSomethingHere()
        'Do some work here
    End Sub
End Class

我曾尝试这样做,但我不断收到以下错误:“调用另一个构造函数时,对正在构造的对象的隐式引用无效”。

我可以不做上面我想做的事吗?我最初在自己的 setter 方法中设置了委托(delegate)。但是后来我创建了一个欺骗性的 API,因为它确实需要指向一个方法才能正常工作。

最佳答案

您不能传递属于ConcreteClass 的东西,因为在调用基类的构造函数时该对象仍在构造中。因此当时不能使用。

在基础上添加一个抽象方法听起来更合理。

关于vb.net - 我可以将委托(delegate)从后代的构造函数传递到抽象类的构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265828/

相关文章:

.net - 读取文件夹中的多个文本文件

c++ - 返回值和局部变量的区别

ios - 如何为 UIPageViewController Delegate 创建自定义类?

c++ - 来自 initializer_list 的构造函数

javascript - 是否可以将值与构造函数的参数进行比较?

qt - 如果我想使用 Qt 中的对话框编辑项目,我应该使用委托(delegate)类吗?

design-patterns - qml 文件夹列表模型

.net - Visual Basic,当我唯一的引用是 "System.Drawing"时,为什么我不能导入 "System"?

vb.net - 使用 xElement 循环 XML 记录

使用 FQDN 的 MySQL 连接字符串