我有两个类,一个继承自另一个。基类是 MustInherit/abstract 并定义了 MustOverride/abstract 属性。
作为基类初始化的一部分,它根据抽象属性的值设置一个变量。问题是继承类接受应该分配给覆盖属性的值作为其参数。继承的类设置此属性,但不是在调用基类的初始化程序之前。
基本上,我需要初始化部分基类,然后让继承类初始化它的一些属性,然后返回基类完成更多属性的初始化。
我会将属性作为基类的一部分,但是继承类使用强类型,而基类只需要一个接口。
代码示例:
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