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

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?
 
L

lord.zoltar

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?
 
G

Guest

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.
 
P

Phill W.

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top