У меня есть абстрактный класс, для работы которого требуется делегат. Я передаю делегата в конструктор. Теперь, когда у меня есть конструктор не по умолчанию, мне нужно вызвать конструкторы абстрактного класса из конкретного класса, что означает, что мне нужно использовать 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
Я пытался сделать это, но постоянно получаю следующую ошибку: «Неявная ссылка на объект в процессе строительства недопустима при вызове другого конструктора».
Могу ли я не делать то, что пытаюсь сделать выше? Первоначально у меня была установка делегата в его собственном методе установки. Но затем я создаю обманчивый API, потому что он требует указания метода для правильной работы.