Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 06:24   #1
KonH
Новичок
Джуниор
 
Регистрация: 20.02.2010
Сообщений: 1
По умолчанию Generic как поля обычных классов

Есть класс, который является универсальным (generic), при этом он должен быть полем другого класса (в данном случае неизвестно, какими будут его параметры), то есть тот класс, который его содержит, сам по себе не является универсальным.
Вот как примерно я это себе представляю:
Код:
public class GClass<T>
{
   public T variable;
}

class Storage
{
   public GClass element;
   // В данном случае параметр неизвестен,
   // и его можно (?) получить через конструктор
   // или методы класса
}
Как это можно реализовать? Читал по generic'ам не так много, но подобного не увидел.
KonH вне форума Ответить с цитированием
Старый 27.08.2010, 09:34   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Так нельзя. Нужно явно указывать тип параметра.
Код:
class Storage
{
   public GClass<int> element;
}
Есть вариант создания общего интерфейса:
Код:
public interface IGClass
{
  ...
}

public class GClass: IGClass
{
  ...
}

public class Storage
{
  public IGClass element;

  private Storage()
  {}

  static Storage CreateStorage<T>()
  {
    Storage result = new Storage();
    result.element = new GClass<T>();
 
    return result;
  }
}
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить значение поля грид на основе значения другого lookUp поля malayka БД в Delphi 0 21.04.2010 19:06
В чем отличие меток с @ от обычных? Hant111 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 21.04.2010 04:12
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18