Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование List<T> 
:(
    Опции темы
drdoom
Дата 23.1.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



У меня наверно глупый вопрос, как отнаследовать List<T>?
мне надо в класс этот добавить свойство Name, ну чтобы она именнованная была. мучал гугл и форумы не нашел инфы
PM MAIL ICQ   Вверх
nmn
Дата 23.1.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



Код

class newList<T> : List<T>
        { }

PM Skype   Вверх
drdoom
Дата 23.1.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Спасибо)))
PM MAIL ICQ   Вверх
drdoom
Дата 23.1.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



вот я пронаследовал List<T> таким образом
Код

public class NamedList<T> : List<T>
    {
        private string name;
        public NamedList(string name)
        {
            this.name = name;
        }

        
        public override string ToString()
        {
            return name;
        }
    }

вот его экземпляр засовываю в CheckedListBox
Код

RealCheckedListBox.Items.Add(list);

а почему то на форме в листбоксе пишит просто Collection а не то имя что я для нее задал((
PM MAIL ICQ   Вверх
WarHog
Дата 23.1.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



нужно, чтобы значение свойства было выведено в ListBox'e? можно сделать так, но зачем?
Код

class NamedList<T> : List<T>
    {
        public string Name
        {
            get;
            set;
        }
        public NamedList(string name)
        {
            this.Name = name;
        }


        public override string ToString()
        {
            return Name;
        }
    }

и
Код

checkedListBox1.Items.Add(list.Name);

в единственном item'e ListBox'а будет значение свойства, задаваемое в конструкторе smile
--------------------
PM MAIL   Вверх
drdoom
Дата 24.1.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



у меня лист этих классов
их там куча

PM MAIL ICQ   Вверх
Veitmen
Дата 24.1.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 3
Всего: 4



Хм... Что то я не понял что вы хотите сделать... Вы хотите сделать свой лист? Навесить на него какие свойства методы которых нет в List<T>? Или вы хотите содержимое листа запихать в ListBox?
PM MAIL ICQ   Вверх
PashaPash
Дата 24.1.2009, 15:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Что ж вы все такие непонятливые...
drdoom, на самом деле в msdn по ListBox.ObjectCollection.Add не хватает пары деталей. Для item действительно вызывается ToString(), но только если класс item-а не заявляет что для его преобразования нужно использовать TypeConverter. А на List<T> кто-то поставил аттрибут c указанием CollectionConverter, который из любой строчки делает стандартный "(collection)". Тебе явно указать правильный конвертер для NamedList<T>, примерно так:
Код

class NamedListTTypeConverter : CollectionConverter
{
    public override bool CanConvertTo(ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(string))
        {
            return true;
        }
        else
        {
            return base.CanConvertFrom(context, sourceType);
        }
    }

    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(string))
        {
            return value.ToString();
        }
        else
        {
            return base.ConvertTo(context, culture, value, destinationType);
        }
    }
}

[TypeConverter(typeof(NamedListTTypeConverter))]
class NamedList<T> : List<T>
{
    public string Name
    {
        get;
        set;
    }
    public NamedList(string name)
    {
        this.Name = name;
    }
    public override string ToString()
    {
        return Name;
    }
}



--------------------
PM MAIL WWW   Вверх
drdoom
Дата 24.1.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



спасибо, именно это и надо было мне услышать

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.