我正在尝试为通用事件创建一个通用控制器类。但是这些事件仍然需要访问它们的类变量。所以我的想法是创建带有ModelBaseclass变量的基础控制器类,作为_ClassVar,它由所有其他类Controller类继承而来。但是我希望派生控制器类可以用他们需要的任何一个覆盖_ClassVar。我可以重写使用VB.NET在类中声明的变量吗?
我想这样做,所以ControllerBaseClass可以具有所有派生类将使用的所有通用函数。
型号:
Public Class ModelBaseClass
Public Overridable Function Foo() As String
Return "Name"
End Function
End Class
Public Class ModelDerivedClass1
Inherits ModelBaseClass
Public Overrides Function Foo() As String
Return "ModelDerivedClass1"
End Function
End Class
Public Class ModelDerivedClass2
Inherits ModelBaseClass
Public Overrides Function Foo() As String
Return "ModelDerivedClass2"
End Function
End Class
控制器:
Public Class ControllerBase
Public Overridable _ClassVar As ModelBaseClass <----
Public Function PrintFoo() As String
Return _ClassVar.Foo()
End Function
End Class
Public Class ControllerDerivedClass1
Inherits ControllerBase
Public Overrides _ClassVar As ModelDerivedClass1 <----
End Class
Public Class ControllerDerivedClass2
Inherits ControllerBase
Public Overrides _ClassVar As ModelDerivedClass2 <----
End Class
-1 Overcomplicates没有意识到,没有必要_ClassVar或“明确的”多态性像OP试图实现。 – siride 2010-12-16 16:12:16
这并不过分复杂。它的'泛型'以最简单的格式。 – decyclone 2010-12-16 16:15:52
得说,我没有看到通用方法的概率。无论是科迪灰色的回答还是解码器都可以工作。 Cody的方法需要更多的投射,+ + MIGHT +提供一些有限的好处,如果控制器必须在特定于每个派生类的模型中使用功能,但就是这样。 – DarinH 2010-12-16 17:47:43