.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 } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д