1 public class Book
2 {
3 public virtual string GetDescription()
4 {
5 return "a normal book";
6 }
7 }
8
9 public class AspNetBook : Book
10 {
11 public new string GetDescription()
12 {
13 return "an aspnet book";
14 }
15 }
16
17 public class WcfBook : Book
18 {
19 public override string GetDescription()
20 {
21 return "an wcf book";
22 }
23 }
24
25 class Program
26 {
27
28 static void Main(string[] args)
29 {
30 Book b = null;
31
32 AspNetBook a = new AspNetBook();
33 Console.WriteLine(a.GetDescription()); // callvirt instance string CallMethodTest.AspNetBook::GetDescription()
34
35 b = a;
36 Console.WriteLine(b.GetDescription()); // callvirt instance string CallMethodTest.Book::GetDescription()
37
38 WcfBook c = new WcfBook();
39 Console.WriteLine(c.GetDescription()); // callvirt instance string CallMethodTest.Book::GetDescription()
40
41 b = c;
42 Console.WriteLine(b.GetDescription()); // callvirt instance string CallMethodTest.Book::GetDescription()
43
44 Console.ReadLine();
45 }
46 }