제네릭 이벤트에 대한 일반 컨트롤러 클래스를 만들려고합니다. 그러나 이러한 이벤트는 여전히 클래스 변수에 액세스해야합니다. 그래서 내 생각은 BaseClass 클래스를 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
컨트롤러 : polymorphism에
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
이것은 지나치게 복잡하지 않습니다. 가장 간단한 형식의'Generics'. – decyclone
일반적인 접근법으로는 문제가 발생하지 않습니다. Cody grays 대답이나 decyclone이 작동합니다. 코디의 접근 방식은 컨트롤러가 각 파생 된 클래스에 고유 한 모델에서 기능을 사용해야하는 경우 약간의 캐스팅을 필요로하고 + MIGHT +는 일부 제한된 이점을 제공합니다. – DarinH