.NET 4.x Список абстрактных классов - C#
Формулировка задачи:
Здравствуйте!
Прошу помочь с одной проблемой. Суть проблемы в следующем - есть 2 разных класса (Например, Photo и Music). Реализация этих классов не имеет значения, главное лишь то, что они абсолютно разные. Кроме того, есть 3-й класс Media. Одно поле этого класса должно содержать экземпляр 1-го или 2-го класса. И ко всему прочему мне необходимо создать список экземпляров Media, причем так, чтобы можно было обратиться к полям первых двух классов. Возможно ли такое, в принципе, или нет? Если да, подскажите, пожалуйста, как это сделать.
Попробовала сделать так:
Работает, но невозможно обратиться к list[0].Attach, т.к. в интерфейсе нет такого поля...
А, если вот так:
тоже компилируется, нужные классы в список добавляются, но обратиться к их полям не получается.
Помогите, пожалуйста! Как сделать такой список, чтобы можно было обратиться к полям классов Photo и Music???
Заранее благодарю за помощь!
public class Media<T> : IMedia
{
public string Type { get; set; }
public T Attach { get; set; }
}
public interface IMedia
{
string Type { get; set; }
}
List<IMedia> list = new List<IMedia> {new Media<Photo>(), new Media<Music>()}; public class Media
{
public string Type { get; set; }
public object Attach { get; set; } // dynamic тоже пробовала
}
List<Media> list = new List<Media> {new Media(), new Media()};
list[0].Attach = new Photo();
list[1].Attach = new Music();Решение задачи: «.NET 4.x Список абстрактных классов»
textual
Листинг программы
using System;
using System.Collections.Generic;
public class Media
{
public string Type { get; set; }
public dynamic Attach { get; set; } // dynamic тоже пробовала
}
class Photo { public int mem; }
class Music { }
class mem
{
static void Main()
{
List<Media> list = new List<Media> { new Media(), new Media() };
list[0].Attach = new Photo();
list[1].Attach = new Music();
list[0].Attach.mem = 5;
Console.WriteLine(list[0].Attach.mem);//5
}
}