using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Four { class Program { static void Main(string[] args) { string answ = ""; int answer=0,i=0; List classi = new List(); while ( answ!="нет") { Console.WriteLine("Объект какого из классов добавить?(1/2) "); answer =int.Parse( Console.ReadLine()); switch (answer) { case 1: { Console.WriteLine("Введите a и b"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); classi.Add(new Two.ElseOne(i, a, b)); i++; break; } case 2: { Console.WriteLine("Введите a и b"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); classi.Add(new Three.ElseOne(i, a, b)); i++; break; } } Console.WriteLine("Добавить еще?"); answ = Console.ReadLine(); for (int k=1; k > classi.Count; k++) { classi[k].ArithmeticMethod(); classi[k].ClassInfoMethod(); } } Console.ReadKey(); } } } namespace One { public abstract class Base { public int i, a, b; public Base(int i, int a, int b) { this.i = i; this.a = a; this.b = b; } public virtual int ArithmeticMethod() { return a * b; } public void SetObjectNum() { this.i = i*1; } public abstract void ClassInfoMethod(); } } namespace Two { public class ElseOne : One.Base { public ElseOne(int i,int a,int b): base(i, a, b) { this.a = a; this.b = b; this.i = i; } public override int ArithmeticMethod() { return a + b; } public void SetObjectNum(int number) { this.i = i; } public override void ClassInfoMethod() { Console.WriteLine("ElseOne другой " + i); } } } namespace Three { public class ElseOne : One.Base { public ElseOne(int i, int a, int b): base(i, a, b) { this.a = a; this.b = b; this.i = i; } public override int ArithmeticMethod() { return a / b; } public void SetObjectNum(int number) { this.i = number; } public override void ClassInfoMethod() { Console.WriteLine("AndElse " + i); } } }