/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 15 - ConversionsConversions of Classes (Reference Types)To an Interface // the Object Might Implement // copyright 2000 Eric Gunnerson using System; interface IDebugDump { string DumpObject(); } class Simple { public Simple(int value) { this.value = value; } public override string ToString() { return(value.ToString()); } int value; } class Complicated: IDebugDump { public Complicated(string name) { this.name = name; } public override string ToString() { return(name); } string IDebugDump.DumpObject() { return(String.Format( "{0} Latency: {1} Requests: {2} Failures: {3} ", new object[] {name, latency, requestCount, failedCount} )); } string name; int latency = 0; int requestCount = 0; int failedCount = 0; } public class ToanInterfacetheObjectMightImplement { public static void DoConsoleDump(params object[] arr) { foreach (object o in arr) { IDebugDump dumper = o as IDebugDump; if (dumper != null) Console.WriteLine("{0}", dumper.DumpObject()); else Console.WriteLine("{0}", o); } } public static void Main() { Simple s = new Simple(13); Complicated c = new Complicated("Tracking Test"); DoConsoleDump(s, c); } }