Last active
August 29, 2015 14:02
-
-
Save margusmartsepp/61c3b7b5a380c31f0065 to your computer and use it in GitHub Desktop.
C# new interface method
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Program | |
{ | |
public interface IPerson { string Speak(); } | |
public interface IMale : IPerson { string GrowABeard(); new string Speak();} | |
public interface IFemale : IPerson { string Gossip(); new string Speak();} | |
public class XY : IMale | |
{ | |
private string name = ""; | |
public XY(string name) { this.name = name; } | |
string IMale.GrowABeard() { return string.Format("{0} grows a beard like a male", name); } | |
string IMale.Speak() { return string.Format("{0} speaks like a male", name); } | |
string IPerson.Speak() { return string.Format("{0} speaks like a male person", name); } | |
} | |
public class XX : IFemale | |
{ | |
private string name = ""; | |
public XX(string name) { this.name = name; } | |
string IFemale.Gossip() { return string.Format("{0} gossips like a female", name); } | |
string IFemale.Speak() { return string.Format("{0} speaks like a female", name); } | |
string IPerson.Speak() { return string.Format("{0} speaks like a female person", name); } | |
} | |
public class XXY : IMale, IFemale | |
{ | |
private string name = ""; | |
public XXY(string name) { this.name = name; } | |
string IMale.GrowABeard() { return string.Format("{0} grows a beard like a male", name); } | |
string IMale.Speak() { return string.Format("{0} speaks like a person male", name); } | |
string IPerson.Speak() { return string.Format("{0} speaks like a person", name); } | |
string IFemale.Speak() { return string.Format("{0} speaks like a person female", name); } | |
string IFemale.Gossip() { return string.Format("{0} gossips like a female", name); } | |
} | |
static void Main(string[] args) | |
{ | |
var sb = new StringBuilder(); | |
foreach (var person in new List<IPerson>() { new XXY("Kai"), new XX("Olivia"), new XY("Liam") }) | |
{ | |
if (person is IPerson) | |
sb.AppendLine((person as IPerson).Speak()); | |
if (person is IMale) | |
sb.AppendLine((person as IMale).Speak()); | |
if (person is IFemale) | |
sb.AppendLine((person as IFemale).Speak()); | |
} | |
Console.WriteLine(sb.ToString()); | |
Console.ReadLine(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment