Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:25 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, alexdp. А какой смысл динамически приводить экземпляр класса к своему же типу? И что такое "дефайн" в C#? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 13:38 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, alexdp, Вы писали: A>Можно ли как-то на шарпе реализовать такую вещь? Очень загадочный пример из которого ничего вообще не ясно. A>Пока я вижу только возможность использовать дефайн. А такой возможности попросту нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 13:39 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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, 13:59 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:01 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:02 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, alexdp. До сих пор не совсем понятно, что Вам нужно, однако складывается впечатление, что Вам нужно размножить по классам некий сходный код, и при этом ситаацию нельзя свести к наследованию. Если это именно так, то Вам могут помочь инструменты метапрограммирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 14:16 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:17 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:22 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#18+
"nikov" <55905@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1999383@news.rsdn.ru... > Здравствуйте, alexdp. > > До сих пор не совсем понятно, что Вам нужно, однако складывается > впечатление, что Вам нужно размножить по классам некий сходный код, и при > этом ситаацию нельзя свести к наследованию. Если это именно так, то Вам > могут помочь > инструменты > метапрограммирования. У меня есть набор классов, каждый из которых среди прочего должен уметь возвращать свою дженерик коллекцию. И мне не хочется в каждом из классов ручками переправлять тип элементов находящихся в коллекции. Как правильно указал Константин Л., здесь бы помог тайпдеф, но в шарпе его нет и можно юзать только using, которій мне не подходит по той причине, что классі разделяют общий неймспейс.Posted via RSDN NNTP Server 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 14:59 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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:10 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#18+
Convert.ChangeType() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 15:29 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2006, 18:02 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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, 10:23 |
|
||
|
Динамическое приведение типа
|
|||
|---|---|---|---|
|
#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(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 13:15 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33851049&tid=1391711]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
163ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 522ms |

| 0 / 0 |
