Home All Groups Group Topic Archive Search About

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

Author
16 Nov 2006 11:34 AM
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?

Author
16 Nov 2006 4:19 PM
lord.zoltar
MrAnon wrote:
Show quoteHide quote
> 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?
Author
16 Nov 2006 4:23 PM
Spam Catcher
"MrAnon" <josh.tw***@gmail.com> wrote in news:1163676877.010944.75070
@m73g2000cwd.googlegroups.com:

> 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.
Author
16 Nov 2006 4:47 PM
Phill W.
MrAnon wrote:

Show quoteHide quote
> 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.