|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
Привет Что-то затруднился. Как-нибудь можно преобразовать экземпляр object в тип, корый возвращает Type.GetType("MyClass")? То есть вот так конечно компилятор не даст сделать: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 15:44 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
rigorMortis, object obj1 = (MyClass)obj2; это называется упаковка и распаковка (boxing & unboxing) https://msdn.microsoft.com/ru-ru/library/yz2be5wk.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 15:49 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
rigorMortis, Используя Type.GetType полный fully qualified namespace указать для MyClass пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 15:52 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
Еще как вариант: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 15:56 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
Говоря о fully qualified assembly namespace имел в виду что-то вроде этого: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 15:58 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
Неправильно написал . Мне в итоге не object надо получить, а то что вернёт GetType. Некая функция возвращает object, и нам надо преобразовать. То есть схематично так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 16:04 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
rigorMortis, вот это "MyClass" откуда приходит? Как я понимаю, оно неизвестно на этапе компиляции. Коротко - это невозможно напрямую. Можно создавать экземпляр рефлексией. Но тогда и доступ к членам придётся делать через рефлексию. Это очень медленно. Вероятно, следует создать иерархию классов. И в рантайме создавать одного из потомков базового класса. Тогда можно будет напрямую обращаться к членам класса, при этом будут вызываться перегруженные в потомках версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 16:47 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
rigorMortis, это бред , нельзя распаковать класс не зная его тип заранее. В идеале тут 2 пути: путь а) использовать интерфейсы. б) использовать основной принцип ООП, наследование. Наследуйте нужные классы от 1 базового, а потом обращайтесь к ним через базовые абстрактные или виртуальные методы. Профит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 17:14 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
Какая нафиг упаковка-распаковка? Type.GetType("...") всегда либо возвращает экземпляр System.Type, либо выбрасывает исключение. Кто тут чего упаковывать собрался? Если ТС собрался привести свой obj к типу, который возвращает Type.GetType("..."), то Convert.ChangeType в помощь. Но на выходе всё равно будет object, и строго типизированное значение получить не получится. И такие выкрутасы лично для меня попахивают кривой архитектурой. См. что писал выше Roman Mejtes . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 19:01 |
|
Преобразовать object в то что вернул Type.GetType().
|
|||
---|---|---|---|
#18+
petalvikНо тогда и доступ к членам придётся делать через рефлексию. Это очень медленно. Нет, не медленно, а просто медленнее чем прямой вызов. Вполне нормально. Все современные технологии фреймворков - типа хибернейт или WPF используют рефлексию. petalvikВероятно, следует создать иерархию классов. И в рантайме создавать одного из потомков базового класса. Тогда можно будет напрямую обращаться к членам класса, при этом будут вызываться перегруженные в потомках версии. А это да. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 09:58 |
|
|
start [/forum/topic.php?fid=20&msg=38873529&tid=1401936]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 360ms |
total: | 486ms |
0 / 0 |