Явная реализация интерфейса и generic метод
От: igor-booch Россия  
Дата: 30.07.20 09:18
Оценка:
using System;

namespace ConsoleApp17
{
    class Program
    {
        static void Main(string[] args)
        {
            Class @object = new Class();
            IBase @base = @object;
            IDerived1 derived1 = @object;
            IDerived2 derived2 = @object;

            @base.Do();
            derived1.Do();
            derived2.Do();

            Do<IBase>(@base);
            Do<IDerived1>(derived1);
            Do<IDerived2>(derived2);

            Console.ReadLine();
        }

        public static void Do<TClass>(TClass @object) where TClass : IBase
        {
            @object.Do();
        }

    }

    public class Class : IDerived1, IDerived2
    {
        #region Implementation of IBase

        void IBase.Do()
        {
            Console.WriteLine("IBase");
        }

        void IDerived1.Do()
        {
            Console.WriteLine("IDerived1");
        }

        void IDerived2.Do()
        {
            Console.WriteLine("IDerived2");
        }
        #endregion
    }

    public interface IBase
    {
        void Do();
    }

    public interface IDerived1 : IBase
    {
        new void Do();
    }

    public interface IDerived2 : IBase
    {
        new void Do();
    }
}



Выводит:

IBase
IDerived1
IDerived2
IBase
IBase
IBase



Есть ли способ сделать так, чтобы вывод был:

IBase
IDerived1
IDerived2
IBase
IDerived1
IDerived2


???
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Отредактировано 30.07.2020 9:18 igor-booch . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.