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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить интерфейс по его имени 
:(
    Опции темы
Brausman
Дата 15.3.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, до сей поры программировал только в Delphi, ну и давно реализовывал сложную математику на С++. На работе пришлось столкнуться со SCADA-системой в которой реализация идет через C#.
Только начал его изучение, но на работе, как вы понимаете, результат нужен сейчас.
Вот в чем вопрос, имеется имя интерфейса в SCADA(например IPresentation.Name), как зная только это имя получить его интерфейс(топорно выражаясь получить доступ к методам и свойствам интерфейса IPresentation), средствами языка C#.
PM MAIL   Вверх
Brausman
Дата 15.3.2011, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По теме у меня нет переменной объекта, чтобы привести его,например так :
((IPresentation)SCADAObj).Name;
имеется только имя объекта(интерфейса), и я не знаю, как через имя(интерфейса,объекта), получить объект(интерфейс).
В этом вся и трабла(.
PM MAIL   Вверх
mihryak
Дата 15.3.2011, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 36



Цитата(Brausman @  15.3.2011,  12:09 Найти цитируемый пост)
имеется только имя объекта(интерфейса), и я не знаю, как через имя(интерфейса,объекта), получить объект(интерфейс).

ничего не понятно
PM MAIL ICQ   Вверх
Brausman
Дата 15.3.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Поясняю ниже из кода имеется только имя(выделенное) : 
((IPresentation)SCADAObj).Name;
Как мне получить только зная имя SCADAObj.Name или ((IPresentation)SCADAObj).Name, получить переменную содержащую класс - SCADAObj или интерфейс - IPresentation.
PM MAIL   Вверх
mihryak
Дата 15.3.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 36



всё равно не понимаю
у тебя есть откуда-то взявшаяся строка "Name", так? и ты хочешь получить переменную с типом Type из неё, зная при этом, что это будет SCADAObj или IPresentation?
почему бы тогда не вызвать сразу typeof(IPresentation)?

если же ты под 
Цитата(Brausman @  15.3.2011,  13:22 Найти цитируемый пост)
переменную содержащую класс

подразумеваешь не Type, а экземпляр этого типа, то никак разумеется, ведь этих инстансов ещё может не быть создано ни одного, или их тысячи

PM MAIL ICQ   Вверх
Fitc
Дата 15.3.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



Цитата(Brausman @ 15.3.2011,  12:22)
Поясняю ниже из кода имеется только имя(выделенное) : 
((IPresentation)SCADAObj).Name;
Как мне получить только зная имя SCADAObj.Name или ((IPresentation)SCADAObj).Name, получить переменную содержащую класс - SCADAObj или интерфейс - IPresentation.

Тебе нужен экземпляр класса в котором инициализирован SCADAObj.
Если SCADAObj - поле класса, то делай так:
Код

FieldIfo fi=SCADAObjParent.GetType().GetField(nameOfSCADAObj);
IPresentation valueOfSCADAObj=fi.GetValue(SCADAObjParent,null) as IPresentation;

Если SCADAObj  - свойство класса, то делай так:
Код

PropertyInfo pi=SCADAObjParent.GetType().GetProperty(nameOfSCADAObj);
IPresentation valueOfSCADAObj=fi.GetValue(SCADAObjParent,null) as IPresentation;

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

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


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

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


 




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


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

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