Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: .NET
Expertise: Beginner
Apr 29, 2008

Override a Child Class' Parent Method

C# seems to fail in an advanced use of polymorphism, as demonstrated by the following code:

class AReturn {}
class BReturn : AReturn {}

class A
{
   public virtual AReturn GetReturn() {...}
}

class B
{
   public override BReturn GetReturn() {...}
}
The compiler complains that, in class B, GetReturn is not returning an AReturn even though BReturn inherits from AReturn. Here's a simple workaround for this situation:

class AReturn {}
class BReturn : AReturn {}

class A
{
   public AReturn GetReturn() { return InternalGetReturn(); }
   protected virtual AReturn InternalGetReturn() {...}
}

class B
{
   public new BReturn GetReturn() { return
 (BReturn)InternalGetReturn();
}
   protected override AReturn InternalGetReturn() {...}
}
Unfortunately, you're required to use an explicit cast—but this should be safe as long as class B's InternalGetReturn and those of any of its subclasses return an object that is a BReturn.

Anthony Burke
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap