using System; interface Printable { void MarginX(float factor); void MarginY(float factor); } public class Component { public Component() {} } public class TextField: Component, Printable { public TextField(string text) { this.text = text; } // implementing Printable.MarginX() public void MarginX(float factor) { Console.WriteLine("MarginX: {0} {1}", text, factor); // scale the object here. } // implementing Printable.MarginY() public void MarginY(float factor) { Console.WriteLine("MarginY: {0} {1}", text, factor); // scale the object here. } private string text; } class Test { public static void Main() { Component[] dArray = new Component[100]; dArray[0] = new Component(); dArray[1] = new TextField("A"); dArray[2] = new TextField("B"); foreach (Component d in dArray) { if (d is Printable) { Printable scalable = (Printable) d; scalable.MarginX(0.1F); scalable.MarginY(10.0F); } } } }
MarginX: A 0.1 MarginY: A 10 MarginX: B 0.1 MarginY: B 10