Абстрактный List с интерфейсом [дубликат]

245
11 ноября 2017, 10:44

На данный вопрос уже ответили:

  • Недостатки обобщенных типов в C# 3 ответа
  • В чем суть ковариантности и контравариантности делегатов? 2 ответа
  • Контравариантность обобщенных делегатов С# [дубликат] 2 ответа

Здравствуйте! Подскажите как реализовать абстрактный List<> который содержит интерфейсы? Компилятор ругается на get { return arr; }якобы разные типы.

abstract class TestClass 
{
    protected abstract List<IMyClass> ListWithInterface { get; }
}
class TestClass2 : TestClass
{
    List<MyClass> arr = new List<MyClass>();
    protected override List<IMyClass> ListWithInterface
    {
        get { return arr; }
    }
}
interface IMyClass
{
    int A { get; }
}
class MyClass : IMyClass
{
    int a;
    int IMyClass.A
    {
        get { return a; }
    }
    public MyClass(int a)
    {
        this.a = a;
    }        
}
Answer 1

Спасибо за ссылки, решил с помощью обобщения.

class Program
{
    static void Main(string[] args)
    {
        TestClass2 testClass2 = new TestClass2();
        testClass2.Print();
    }
}
abstract class TestClass <T> where T : IMyClass
{
    protected abstract List<T> ListWithInterface { get; }
    internal void Print()
    {
        for(int i = 0; i < ListWithInterface.Count; i++)            
            Console.WriteLine(ListWithInterface[i].A);            
    }    
}
class TestClass2 : TestClass<MyClass2>
{
    List<MyClass2> arr = new List<MyClass2>() { new MyClass2(5) };
    protected override List<MyClass2> ListWithInterface
    {
        get { return arr; }
    }        
}
interface IMyClass
{
   int A { get; }
}
class MyClass2 : IMyClass
{
    int a;
    int IMyClass.A
    {
        get { return a; }
    }
    public MyClass2(int a)
    {
        this.a = a;
    }       
}
READ ALSO
Отслеживание одинаковых процессов

Отслеживание одинаковых процессов

В своей программе мне надо запускать одно и то же приложение например так:

195
Загружаются не все файлы из списка

Загружаются не все файлы из списка

Работаю над обновлением файлов, список которых получаю по ссылке в json форматеПри загрузке приложения, я получаю callback, откуда составляю список...

270
Побитовое сравнение

Побитовое сравнение

Объясните пожалуйста на пальцахУ меня есть маска в двоичном представлении 0000 0100, я хочу во время когда пользователь вводит число, например...

311
как использовать мьютекс (Mutex)

как использовать мьютекс (Mutex)

Не могу разобраться как добавить мьютекс,в форме есть 6 pictureBox-ов, каждые t секунды меняет цвет первой части, в ответ на изменение цвета в первой...

261