This post originated from an RSS feed registered with .NET Buzz
by John Papa.
Original Post: Refactoring - OOP Example from VB.NET to C#
Feed Title: John Papa
Feed URL: /error.htm?aspxerrorpath=/blogs/john.papa/rss.aspx
Feed Description: .NET Code Samples, Data Access, Patterns and Other Musings
OK, I don't want to leave out the C# developers from this VB.NET OOP example that Raymondposted recently. So here is one way to accomplish this code in C#.
Inheritence, Interfaces, and OOP (oh my!)
public class foo
{
public static Int32 GetNumberOfRequiredTokens(IPerson person)
{
return person.GetNumberOfRequiredTokens();
}
}
public interface IPerson
{
Int32 GetNumberOfRequiredTokens();
}
public abstract class Person : IPerson
{
public Person()
{
}
private Int32 baseTokenAmount = 1;
protected Int32 Tokens
{
get
{
return baseTokenAmount;
}
}
public abstract Int32 GetNumberOfRequiredTokens();
}
public class Child : Person
{
public override Int32 GetNumberOfRequiredTokens()
{
return base.Tokens;
}
}
public class Adult : Person
{
public override Int32 GetNumberOfRequiredTokens()
{
return base.Tokens * 3;
}
}
public class Infant : Person
{
public override Int32 GetNumberOfRequiredTokens()
{
throw new TooYoungException();
}
}
public class TooYoungException : Exception
{
}