Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.07.2006, 13:25
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Можно ли как-то на шарпе реализовать такую вещь? VariableDefinition vd = new VariableDefinition(); Type myType = vd.GetType(); vd = (myType)new VariableDefinition(); Пока я вижу только возможность использовать дефайн. Еще какие-то возможности есть? Просто поле myType должно быть у каждого класса. Если это делать с помощью дефайн, то тогда каждый класс должен быть в своем классе. Не будут ли они пересекаться?Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 13:38
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp. А какой смысл динамически приводить экземпляр класса к своему же типу? И что такое "дефайн" в C#? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 13:39
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp, Вы писали: A>Можно ли как-то на шарпе реализовать такую вещь? Очень загадочный пример из которого ничего вообще не ясно. A>Пока я вижу только возможность использовать дефайн. А такой возможности попросту нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 13:59
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
"nikov" <55905@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1999279@news.rsdn.ru... > А какой смысл динамически приводить экземпляр класса к своему же типу? К своему типу написано для примера. На деле у меня есть метод, который возвращает дженерик List с параметром типа класса class Myclass1 { static List<Myclass1> ReturnCollection() } class Myclass2 { static List<Myclass2> ReturnCollection() } Мне просто не хочется ручками менять в коде класса Myclass2, Myclass2 на Myclass1, а просто где-то его один раз определить в теле класса и потом приводить к єтому определению.Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:01
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
"Mab" <9336@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1999282@news.rsdn.ru... > Здравствуйте, alexdp, Вы писали: > > A>Можно ли как-то на шарпе реализовать такую вещь? > Очень загадочный пример из которого ничего вообще не ясно. См. http://rsdn.ru/forum/?mid=1999336, может єтот фрагмент прояснит ситуацию. > A>Пока я вижу только возможность использовать дефайн. > А такой возможности попросту нет. Да, я уже посмотрел документацию :)Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:02
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp, Вы писали: A>См. http://rsdn.ru/forum/?mid=1999336, может єтот фрагмент прояснит A>ситуацию. Увы, он мало чего проясняет :xz: Пример использования этого хозяйства нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:02
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
vd = (myType)new VariableDefinition(); Можно сделать YourType ggg = Activator.CreateInstance(YourType) as YourType; Вроде так... Успехов! http://www.be-mobile.ru также: программа для агенств персонала "Домашний персонал" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:16
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp. До сих пор не совсем понятно, что Вам нужно, однако складывается впечатление, что Вам нужно размножить по классам некий сходный код, и при этом ситаацию нельзя свести к наследованию. Если это именно так, то Вам могут помочь инструменты метапрограммирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:17
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp, Вы писали: A>"nikov" <55905@users.rsdn.ru> сообщил/сообщила в новостях следующее: A>news:1999279@news.rsdn.ru... >> А какой смысл динамически приводить экземпляр класса к своему же типу? A>К своему типу написано для примера. A>На деле у меня есть метод, который возвращает дженерик List с параметром A>типа класса A> A>class Myclass1 A>{ A> static List<Myclass1> ReturnCollection() A>} A>class Myclass2 A>{ A> static List<Myclass2> ReturnCollection() A>} A> A>Мне просто не хочется ручками менять в коде класса Myclass2, Myclass2 на A>Myclass1, а просто где-то его один раз определить в теле класса и потом A>приводить к єтому определению. Не знаю как в c#, но в с++ это бы выглядело так: template <typename T> struct base { typedef T derived_type; typedef std::list<derived_type> Collection; /*static*/ virtual Collection ReturnCollection() = 0; }; class Myclass1 : public base<Myclass1> {/**/}; Не понятно, почему они у тебя static? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:22
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
" Константин Л. " <44487@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1999384@news.rsdn.ru... > Здравствуйте, alexdp, Вы писали: > Не знаю как в c#, но в с++ это бы выглядело так: > > > > > template <typename T> > struct base > { > typedef T derived_type; > typedef std::list<derived_type> Collection; > /*static*/ virtual Collection ReturnCollection() = 0; > }; > > class Myclass1 : public base<Myclass1> > {/**/}; > > Да, такой вариант мне бы очень хорошо подошел. Только у шарпа нет тайпдефа. > Не понятно, почему они у тебя static? Это по условию моей задачи они такие.Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 14:59
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
"nikov" <55905@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1999383@news.rsdn.ru... > Здравствуйте, alexdp. > > До сих пор не совсем понятно, что Вам нужно, однако складывается > впечатление, что Вам нужно размножить по классам некий сходный код, и при > этом ситаацию нельзя свести к наследованию. Если это именно так, то Вам > могут помочь > инструменты > метапрограммирования. У меня есть набор классов, каждый из которых среди прочего должен уметь возвращать свою дженерик коллекцию. И мне не хочется в каждом из классов ручками переправлять тип элементов находящихся в коллекции. Как правильно указал Константин Л., здесь бы помог тайпдеф, но в шарпе его нет и можно юзать только using, которій мне не подходит по той причине, что классі разделяют общий неймспейс.Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 15:10
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp, Вы писали: A>Как правильно указал Константин Л., здесь бы помог тайпдеф Не думаю. Давайте попробуем развернуть тайпдеф. using System.Collections.Generic; public abstract class Base<T> { public abstract static List<T> ReturnCollection(); } class Myclass1 : Base<Myclass1> { /* ... */ } Но ничего не выходит, так как статические методы не могут быть абстрактными. ;) Может быть, Вам заюзать синглетоны и избавиться от статических методов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 15:29
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Convert.ChangeType() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2006, 18:02
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
> Здравствуйте, alexdp, Вы писали: > > A>Как правильно указал Константин Л., здесь бы помог тайпдеф > > Не думаю. Давайте попробуем развернуть тайпдеф. > > > using System.Collections.Generic; > > public abstract class Base<T> > { > public abstract static List<T> ReturnCollection(); > } > > class Myclass1 : Base<Myclass1> > { > /* ... */ > } > > > Но ничего не выходит, так как статические методы не могут быть > абстрактными. ;) > Может быть, Вам заюзать синглетоны и избавиться от статических методов? Сорри, у меня они не абстрактные. Просто не дописал реализацию. не доследил.Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 10:23
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, Magic_Max, Вы писали: M_M>vd = (myType)new VariableDefinition(); M_M>Можно сделать M_M>YourType ggg = Activator.CreateInstance(YourType) as YourType; Это не скомпилируется. Если YourType — идентификатор типа, то его нельзя передавать в качестве аргумента в метод CreateInstance. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2006, 13:15
|
|||
|---|---|---|---|
|
|||
Динамическое приведение типа |
|||
|
#18+
Здравствуйте, alexdp, Вы писали: A>" Константин Л. " <44487@users.rsdn.ru> сообщил/сообщила в новостях A>следующее: news:1999384@news.rsdn.ru... >> Здравствуйте, alexdp, Вы писали: >> Не знаю как в c#, но в с++ это бы выглядело так: >> >> >> >> >> template <typename T> >> struct base >> { >> typedef T derived_type; >> typedef std::list<derived_type> Collection; >> /*static*/ virtual Collection ReturnCollection() = 0; >> }; >> >> class Myclass1 : public base<Myclass1> >> {/**/}; >> >> A>Да, такой вариант мне бы очень хорошо подошел. A>Только у шарпа нет тайпдефа. >> Не понятно, почему они у тебя static? A>Это по условию моей задачи они такие. ок: public abstract class base<T> { public abstract List<T> Collection(); } class dr : base<dr> { public virtual/*or sealed*/ List<T> Collection(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=18&tablet=1&tid=1391711]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 325ms |

| 0 / 0 |
