У меня есть BaseAbstractClass(of T as WebControl)
(VB Generics), который наследует WebControl
.
BaseAbstractClass
наследуется ConcreteWrapper1
, ConcreteWrapper2
и, наконец, чтобы немного встряхнуть, ConcreteWrapper4
. Каждый из них наследовал бы BaseAbstractClass
, используя другой класс, унаследованный от WebControl
.
Я хотел бы иметь фабрику, которая возвращает ConcreteWrapper
как BaseAbstractClass(of WebControl)
. Но всякий раз, когда я пытаюсь вернуть новый экземпляр ConcreteWrapper
, я получаю ошибку преобразования времени компиляции.
[Редактировать: Код добавлен]
BaseAbstractClass
Public MustInherit Class BaseAbstractClass(Of T As WebControl)
Inherits WebControl
Protected _item As T
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
_item.RenderControl(writer)
End Sub
End Class
Другие ConcreteWrappers выглядят так, за исключением другого CustomControl
Public Class ConcreteWrapper1
Inherits BaseAbstractClass(Of CustomControlInheritedFromWebControl1)
Public Sub New(ByVal control As CustomControlInheritedFromWebControl1)
MyBase._item = control
End Sub
End Class
Public Class CustomControlInheritedFromWebControl1
Inherits WebControl
//not the correct comment markers but the coloring works better
//do stuff here... Implm not important.
End Class
Моя фабрика
Public Class WebControlFactory
Public Shared Function GetWebControl() As BaseAbstractClass(Of WebControl)
Return New ConcreteWrapper1(New CustomControlInheritedFromWebControl1())
End Function
End Class
[/ Edit]
Могу ли я получить объяснение того, что происходит и почему это не сработает (и, возможно, решение)?
Спасибо!