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