![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
mullih |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
Доброго времени суток.
известен тип, при компиляции не известны.
Необходимо создать Список и указатель. Примерно такого вид
Собственно вопрос что засунуть на место "type" во втором коде или как это по другому описать. Заранее "type" не известен. Класс из "class" c в "class c<T>" не хочу делать так как это контрол и в дизайнер после этого будет ругаться. Obj создается с помощью отражения поэтому object просто обертка. На место "type" object не могу поставить т.к. от того что прийдет подписчику в <T> от события зависит дальнейшее поведение Заранее благодарен за помощь |
||||
|
|||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
afaik, эта строчка в момент компиляции преобразуется в код, работающий с конкретным типом, т.е. дженерики - compile-time, а не run-time посмотри сюда |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
-------------------- I don't need a reason being who I am... |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
QryStaL,
мм.... я вообще-то имел в виду то, что тип дженерика вбилдивается в код при компиляции если пойти дальше, то под run-time я имел в виду уже прошедший через JIT код (некорректное использование термина, согласен) - где-то (если не ошибаюсь - RSDN) читал, что, например, List<int> после JIT'а представлен как простой массив целых чисел а вообще тема весьма интересная вот, спеку нашёл |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
при JIT-компиляции, а это уже все-таки рантайм... -------------------- I don't need a reason being who I am... |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
||||
|
||||
mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
Спасибо за помощь и вдогонку еще вопросик по этой же теме
D.Id как правильно записать чтоб для любого объекта <D> типа наследуемого от С1 можно было использовать свойство Id? ЗЫ есть подозрение что такого быть вообще не может без самого объекта но вдруг всетаки можно) Это сообщение отредактировал(а) mullih - 19.8.2008, 15:09 |
|||
|
||||
nagg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: нет Всего: 4 |
Ты б хоть строчку where D : C1 - в комменты вознёс, а то я чуть глаза не поломал.
var result = a.GetById<D>(D.Id); ты у типа пытаешься вызвать экземплярное свойство не создавая объект. --------------------
I am the State... |
|||
|
||||
mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
>var result = a.GetById<D>(D.Id);
>ты у типа пытаешься вызвать экземплярное свойство не создавая объект. я об этом тоже подумал но потом ) >Ты б хоть строчку where D : C1 - в комменты вознёс, а то я чуть глаза не поломал. в вот как раз с это строчкой все в порядке Это ограничение. <D> может быть только типом С1 или его наследниками |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
mihryak, ты не понимаешь, что значит "в момент компиляции преобразуется в код, работающий с конкретным типом", обратись для разъяснения этого вопроса к шаблонам(templates) С++, вот там compile-time и для каждого параметра шаблона действительно компилятор создаст свой тип, в C# и List<int>, и List<string>, и List<char> - это один класс, в С++ в аналогичном случае будет _три_ разных класса. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
source777, я выше пояснил
что класс один - не спорю, так и есть, и моя цитата из рефлектора тоже об этом говорит написал её, чтобы показать, что не существует в IL'е такой штуки, как List<instanceOfSomeType.GetType()>, конкретный тип должен быть явно задан в коде |
|||
|
||||
mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
Вроде нашел решение моего топика
http://www.codeproject.com/KB/dotnet/Invok...ricMethods.aspx Возможно не панацея от всех недуг но может быть комунибудь пригодится Это сообщение отредактировал(а) mullih - 22.8.2008, 19:17 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |