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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметризация класса 
:(
    Опции темы
Competitor
Дата 7.12.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Чтобы сделать класс парметризованным я мспользую следующий код:
Код

public class StandartCreator<T> where T : new()
    {
        public override Product CreateProduct()
        {
            return new T();
        }
    }

А как будет выглядеть этот же фрагмент кода, если еще нужно, чтобы класса StandartCreator наследовался от класса Creator?
PM MAIL WWW   Вверх
Дрон
Дата 7.12.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



Цитата(Competitor @  7.12.2006,  11:42 Найти цитируемый пост)
А как будет выглядеть этот же фрагмент кода, если еще нужно, чтобы класса StandartCreator наследовался от класса Creator? 


Э... А в чём проблема?
Код
public class StandartCreator<T> : Creator where T : new()
    {
        public override Product CreateProduct()
        {
            return new T();
        }
    }



--------------------
Да. Именно так.
PM   Вверх
Competitor
Дата 7.12.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Э... А в чём проблема?

ну ты бы хоть попробывал свой вариант сначала. Такой синтаксис не прокатывает
PM MAIL WWW   Вверх
Дрон
Дата 7.12.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



Цитата(Competitor @  7.12.2006,  12:23 Найти цитируемый пост)
ну ты бы хоть попробывал свой вариант сначала.

Пробовал. Работает.

Цитата(Competitor @  7.12.2006,  12:23 Найти цитируемый пост)
Такой синтаксис не прокатывает 

Компилятор так и пишет "Error: Синтаксис не катит" ?



--------------------
Да. Именно так.
PM   Вверх
mr.DUDA
Дата 7.12.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Код
using System;

public class Creator<T> where T : new()
{
    public virtual T CreateProduct()
    {
        return new T();
    }
}

public class StandartCreator<T> : Creator<T>
    where T : new()
{
    public override T CreateProduct()
    {
        return new T();
    }
}

class Program
{
    static void Main()
    {
        new StandartCreator<int>().CreateProduct();
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
Дрон
Дата 7.12.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



Понял свою ошибку. Тогда уж скорее так:
Код
public class StandartCreator<T> : Creator where T : Product, new()
    {
        public override Product CreateProduct()
        {
            return new T();
        }
    }


Т.е. параметр-класс T должен быть наследником класса Product.
Но на будущее сообщения об ошибках писать всё-таки надо. Варианты "оно не работает" не принимаются.

Это сообщение отредактировал(а) Дрон - 7.12.2006, 12:48


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

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


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

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


 




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


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

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