Exemple #1
0
        static void Main(string[] args)
        {
            
            MyClass myClass = new MyClass();
            
            Foo(myClass);
            Bar(myClass);

            MyOtherClass myOtherClass = new MyOtherClass();              // Создаём экземпляр класса. Он реализует два интерфейса, то этому может иметь оба типа данных
            Foo(myOtherClass);                                           // Этот класс с явно определённой реализацией интерфейсов. 
            Bar(myOtherClass);                                           // Вызываем методы передавая параметром экземпляр класса, где явно реализованы оба метода интерфейсов 

            IFirstInterface firstInterface = myOtherClass;               // Если у нас есть интерфейс, то мы можем в ссылку присвоить экземпляр класса наследника
            firstInterface.Action();
            // Вызвать нужный метод вместо конструкции высше
            ((IFirstInterface)myOtherClass).Action();                    // Привели данные к типу IFirstInterface и вызвали метод Action
            ((ISecondInterface)myOtherClass).Action(); 


            //if (myOtherClass is IFirstInterface )

        }
Exemple #2
0
 static void Foo(IFirstInterface firstInterface)                   // Передаём параметром обьект типа (или ссылку) IFirstInterface, по этому вызывается именно его реализация
 {
     firstInterface.Action();                                      // Вызываем метод Action() у обьекта типа IFirstInterface
 }