我有一个抽象类,它需要委托(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/