Загрузка данных


using System;

namespace _1
{
    interface IDrawable
    {
        void Draw();
    }

    interface IPointy
    {
        int Points();   
    }

    abstract class Shape : IDrawable
    {
        protected string name = "figure";
        int ID { get; set; } = 0;

        public Shape()
        {

        }
        public Shape(string n)
        {
            name = n;
        }
        public abstract void Draw();
        //{
        //    Console.WriteLine(name + " имя");
        //}

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Shape(string name, int id) : this(name)
        {
            ID = id;
        }
    }
    interface IDraw3D
    {
        void Draw();
    }
    class Circle : Shape 
    {
        public Circle(string name) : base(name) { }

        public  override void Draw()
        {
            Console.WriteLine(name + " circle");
        }
    }
    class Square : Shape, IPointy, IDraw3D
    {
        public Square(string name) : base(name) { }
        void IDraw3D.Draw() { Console.WriteLine("Square3D {0}", name); }
        public override void Draw()
        {
            Console.WriteLine(name + " sqare");
        }
        public int Points()
        {
            return 4;
        }
    }

    internal class Program
    {
        public static void DrawShapeIn3D(IDraw3D itf3d)
        {
            Console.WriteLine("*** DrawShapeIn3D ***");
            itf3d.Draw();
        }
        static void Main(string[] args)
        {
            Circle fc = new Circle("circle"); fc.Draw();
            Square fs = new Square("square"); fs.Draw();
            Square s = new Square("square");
            Console.WriteLine("points = {0}", s.Points());

            IPointy ip;// 1
            try
            {
                ip = (IPointy)fs;
                Console.WriteLine("points = {0}", ip.Points());
            }
            catch (InvalidCastException)
            {
                Console.WriteLine("No IPointy");
            }

            ip = fs as IPointy;// 2
            if (ip == null)
            {
                Console.WriteLine("No IPointy");
            }
            else
            {
                Console.WriteLine("points = {0}", ip.Points());
            }

            if (fs is IPointy)// 3
            {
                Console.WriteLine("points = {0}", ((IPointy)fs).Points());
            }
            else
            {
                Console.WriteLine("No IPointy");
            }

            if (s is IDraw3D)//4
            {
                ((IDraw3D)s).Draw();
            }

            if (s is IDraw3D)// 5.6
            {
                DrawShapeIn3D((IDraw3D)s);
            }
        }
    }
}









using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SharpInterfaces
{
    internal class Program
    {
        interface IDraw
        {
            void Draw();
        }

        interface IDraw2 : IDraw
        {
            void DrawToPrinter();
        }

        interface IDraw3 : IDraw2
        {
            void DrawToMetafile();
        }

        class SuperImage : IDraw3
        {
            public void Draw()
            {
                Console.WriteLine("IDraw.Draw");
            }

            public void DrawToPrinter()
            {
                Console.WriteLine("IDraw2.DrawToPrinter");
            }

            public void DrawToMetafile()
            {
                Console.WriteLine("IDraw3.DrawToMetafile");
            }
        }

        static void Main(string[] args)
        {
            SuperImage si = new SuperImage(); try
            {
            }
            catch (InvalidCastException)
            {
                Console.WriteLine("No Interface");
            }

            IDraw idr = (IDraw)si;
            idr.Draw();

            IDraw2 idr2 = (IDraw2)si;
            idr2.Draw();     
            idr2.DrawToPrinter(); 

            ((IDraw3)si).Draw();
            ((IDraw3)si).DrawToPrinter();  
            ((IDraw3)si).DrawToMetafile(); 
        }
    }
}