static void Main(string[] args) { // Use the ATL Car using the ComCarClass // type. Recall! '-Class' types allow you // to call any member of each supported // interface. ComCarClass c = new ComCarClass(); c.TurnOnRadio(RADIOTYPE.EIGHT_TRACK); c.SpeedUp(10); c.TurboBlast(); // Exercise the enum! RADIOTYPE rt = RADIOTYPE.AM_RADIO; string[] names = Enum.GetNames(rt.GetType()); foreach(string s in names) { Console.WriteLine("Name: {0}", s); } // Now make use of explicit interfaces. IComCar itfComCar = new ComCarClass(); itfComCar.TurnOnRadio(RADIOTYPE.FM_RADIO); // Get ITurbo. try { ITurbo itfTurbo = (ITurbo)itfComCar; itfTurbo.TurboBlast(); } catch(InvalidCastException e) { Console.WriteLine(e.Message); } // Now using default interface class type. ComCar c2 = new ComCar(); c2.TurnOnRadio(RADIOTYPE.AM_RADIO); // c2.TurboBoost(); // Bomb! ITurbo itfTurbo2 = (ITurbo)c2; itfTurbo2.TurboBlast(); // Create some jets, UFOs and comcars. ComCarClass c3 = new ComCarClass(); JetPlaneClass j = new JetPlaneClass(); UFO u = new UFO(); XCelerate(c3); XCelerate(j); XCelerate(u); // An array of ITurbo interface. ITurbo[] fastVehicles = {new ComCarClass(), new UFO(), new JetPlaneClass()}; foreach(ITurbo i in fastVehicles) i.TurboBlast(); }
static void Main(string[] args) { // Make a ComCar. Console.WriteLine("****Making ComCar and using object reference. ****"); ComCarClass cCar = new ComCarClass(); cCar.CrankTunes(); for (int i = 0; i < 10; i++) { cCar.SpeedUp(10); Console.WriteLine("cCar speed is: {0}", cCar.CurrentSpeed()); } // Now make a ComCar and use interfaces. Console.WriteLine("\n**** Making ComCar and using interface references. ****"); ComCarClass cCar2 = new ComCarClass(); IRadio itfRadio = (IRadio)cCar2; itfRadio.CrankTunes(); ICar itfCar = (ICar)cCar2; for (int i = 0; i < 10; i++) { itfCar.SpeedUp(10); Console.WriteLine("cCar2 speed is: {0}", itfCar.CurrentSpeed()); } // Now make a ComCar using ComCar. Console.WriteLine("\n**** Making ComCar and using ComCar. ****"); ComCar cCar3 = new ComCar(); for (int i = 0; i < 10; i++) { cCar3.SpeedUp(10); Console.WriteLine("cCar2 speed is: {0}", cCar3.CurrentSpeed()); } // Trigger inherited System.Object members. Console.WriteLine("\n****Using inherited System.Object members. ****"); ComCarClass theCar = new ComCarClass(); ComCarClass otherCar = new ComCarClass(); Console.WriteLine("ToString: {0}", theCar.ToString()); Console.WriteLine("Hash: {0}", theCar.GetHashCode().ToString()); Console.WriteLine("theCar = otherCar? : {0} ", theCar.Equals(otherCar).ToString()); Type t = theCar.GetType(); Console.WriteLine(t.Assembly.FullName); // Make derived type. Console.WriteLine("\n****Using .NET type derived from COM wrapper. ****"); DotNetCar dnc = new DotNetCar(); dnc.CrankTunes(); }
static void Main(string[] args) { // Make a ComCar. Console.WriteLine("****Making ComCar and using object reference. ****"); ComCarClass cCar = new ComCarClass(); cCar.CrankTunes(); for(int i = 0; i < 10; i++) { cCar.SpeedUp(10); Console.WriteLine("cCar speed is: {0}", cCar.CurrentSpeed()); } // Now make a ComCar and use interfaces. Console.WriteLine("\n**** Making ComCar and using interface references. ****"); ComCarClass cCar2 = new ComCarClass(); IRadio itfRadio = (IRadio)cCar2; itfRadio.CrankTunes(); ICar itfCar = (ICar)cCar2; for(int i = 0; i < 10; i++) { itfCar.SpeedUp(10); Console.WriteLine("cCar2 speed is: {0}", itfCar.CurrentSpeed()); } // Now make a ComCar using ComCar. Console.WriteLine("\n**** Making ComCar and using ComCar. ****"); ComCar cCar3 = new ComCar(); for(int i = 0; i < 10; i++) { cCar3.SpeedUp(10); Console.WriteLine("cCar2 speed is: {0}", cCar3.CurrentSpeed()); } // Trigger inherited System.Object members. Console.WriteLine("\n****Using inherited System.Object members. ****"); ComCarClass theCar = new ComCarClass(); ComCarClass otherCar = new ComCarClass(); Console.WriteLine("ToString: {0}", theCar.ToString()); Console.WriteLine("Hash: {0}", theCar.GetHashCode().ToString()); Console.WriteLine("theCar = otherCar? : {0} ", theCar.Equals(otherCar).ToString()); Type t = theCar.GetType(); Console.WriteLine(t.Assembly.FullName); // Make derived type. Console.WriteLine("\n****Using .NET type derived from COM wrapper. ****"); DotNetCar dnc = new DotNetCar(); dnc.CrankTunes(); }
static void Main(string[] args) { // Use the ATL Car using the ComCarClass // type. Recall! '-Class' types allow you // to call any member of each supported // interface. ComCarClass c = new ComCarClass(); c.TurnOnRadio(RADIOTYPE.EIGHT_TRACK); c.SpeedUp(10); c.TurboBlast(); // Exercise the enum! RADIOTYPE rt = RADIOTYPE.AM_RADIO; string[] names = Enum.GetNames(rt.GetType()); foreach (string s in names) { Console.WriteLine("Name: {0}", s); } // Now make use of explicit interfaces. IComCar itfComCar = new ComCarClass(); itfComCar.TurnOnRadio(RADIOTYPE.FM_RADIO); // Get ITurbo. try { ITurbo itfTurbo = (ITurbo)itfComCar; itfTurbo.TurboBlast(); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } // Now using default interface class type. ComCar c2 = new ComCar(); c2.TurnOnRadio(RADIOTYPE.AM_RADIO); // c2.TurboBoost(); // Bomb! ITurbo itfTurbo2 = (ITurbo)c2; itfTurbo2.TurboBlast(); // Create some jets, UFOs and comcars. ComCarClass c3 = new ComCarClass(); JetPlaneClass j = new JetPlaneClass(); UFO u = new UFO(); XCelerate(c3); XCelerate(j); XCelerate(u); // An array of ITurbo interface. ITurbo[] fastVehicles = { new ComCarClass(), new UFO(), new JetPlaneClass() }; foreach (ITurbo i in fastVehicles) { i.TurboBlast(); } }