Can a base class implement a method on an interface for me?

  • Thread starter Thread starter MrAnon
  • Start date Start date
M

MrAnon

I rarely have the pleasure of working in VB.NET so forgive my
ignorance, but what I'm trying to do is very easy in C# and I'm
wondering whether a similar thing is possible in VB.NET.

I have a class MySuperForm

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm
End Class

Public Interface IMySuperForm
Sub Show()
End Interface

In c# that would compile, but in VB.NET I need to declare which method
implements Show() but I can't because the method doesn't belong to me.
It belongs to Form.

The only workaround I have found is to shadow the Sub

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm
Public Shadows Sub Show() Implements IMySuperForm.Show
MyBase.Show()
End Sub
End Class

Is this the only way to achieve this?
 
MrAnon said:
I rarely have the pleasure of working in VB.NET so forgive my
ignorance, but what I'm trying to do is very easy in C# and I'm
wondering whether a similar thing is possible in VB.NET.

I have a class MySuperForm

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm
End Class

Public Interface IMySuperForm
Sub Show()
End Interface

In c# that would compile, but in VB.NET I need to declare which method
implements Show() but I can't because the method doesn't belong to me.
It belongs to Form.

The only workaround I have found is to shadow the Sub

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm
Public Shadows Sub Show() Implements IMySuperForm.Show
MyBase.Show()
End Sub
End Class

Is this the only way to achieve this?

I think so... does shadowing the sub cause any serious problems?
 
I rarely have the pleasure of working in VB.NET so forgive my
ignorance, but what I'm trying to do is very easy in C# and I'm
wondering whether a similar thing is possible in VB.NET.

Declare the class as MustInherit.
 
MrAnon said:
I have a class MySuperForm

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm
End Class

Public Interface IMySuperForm
Sub Show()
End Interface

In c# that would compile, but in VB.NET I need to declare which method
implements Show() but I can't because the method doesn't belong to me.
It belongs to Form.

Cut and pasted into VB'2003 and, after taking out the '>'s and pressing
Enter in a few choice places, the IDE gave me this ...

Public Class MySuperForm
Inherits Form '' Yup, System.Windows.Forms.Form
Implements IMySuperForm

' BINGO!
Public Sub Show1() Implements IMySuperForm.Show

End Sub

End Class

Public Interface IMySuperForm
Sub Show()
End Interface

In fact, Show1 doesn't even have to be Public, if you don't want it to be.

HTH,
Phill W.
 
Back
Top