У меня есть два класса, один из которых наследуется от другого. Базовый класс - MustInherit/abstract и определяет свойство MustOverride/abstract.Инициализация начальной загрузки
Как часть инициализации базовых классов, он устанавливает переменную, основанную на значении абстрактного свойства. Проблема заключается в том, что класс наследования принимает в качестве параметра значение, которое должно быть присвоено свойству overriden. Унаследованный класс устанавливает это свойство, но не до вызова инициализатора базового класса.
В принципе, мне нужно инициализировать часть базового класса, а затем разрешить наследовательному классу инициализировать некоторые его свойства, а затем вернуться к базовому классу, чтобы завершить инициализацию дополнительных свойств.
Я бы сделал свойство частью базового класса, но наследующие классы используют сильную типизацию, тогда как базовому классу нужен только интерфейс.
Пример кода:
MustInherit Class A
MustOverride Property X As IExample
Sub New()
' Do some stuff
_privateY = X.Foo() ' NullReferenceException
End Sub
End Class
Class B
Inherits A
Override Property X As IExample ' returns StrongX
Property StrongX As ConcreteExample ' ConcreteExample implements IExample
Sub New(x As ConcreteExample)
MyBase.New(x)
StrongX = x
End Sub
End Class
(с тегами как на C#, так и на VB.NET, поскольку это относится к обоим языкам, хотя я заинтересован в более релевантных тегах, если есть предложения.) – JDB
Просто потому, что C# и VB.NET оба OO не означает что этот вопрос квалифицируется как C# один. –
Этот вопрос не имеет ничего общего с C# !!! –