![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
САБЖ.
Я где-то читал, что надо Assembly.LoadFrom, но как конкретно не знаю. Помогите pls. ЗЫ Примеры желательно на VB .NET, но можете накалякать на C# или Delphi for .net ![]() |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 164 |
--------------------
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
P.S.
LoadFrom - только в случае, если надо загрузить длл из указанной директории. Есть ещё Assembly.Load, который позволяет грузить Assembly из (в порядке очерёдности) текущей директории, public-директории, из PrivateBinPath (указанных в .config-файле), из GAC, из массива байтов... Есть ещё LoadWithPartialName, который грузит сборку из GAC, по её частичному имени... Много чего есть ![]() Добавлено @ 15:34 P.S. (2) а обычно используют не имя длл, а имя класса, который нужен. То есть, к примеру, plugin прописывается своим именем класса, а в программе, загружающей этот plugin, используется Type.GetType(name), и в итоге нужная длл-ка загружается автоматически, возвращается тип. (А потом уже можно юзать Activator.CreateInstance(type) или type.CreateInstance). -------------------- ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Вы уж меня извините за настойчивость, но проблема такова:
загружается класс с помощью LoadFrom и создается CreateInstance. Но в конструкторе есть такие параметры:
Почему-то, когда в массив я пихаю мои объекты, он все равно пишет MissingMethodException ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А ты не пробовал сделать так:
? Это сообщение отредактировал(а) arilou - 13.4.2005, 12:57 |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
У меня лезет куча ошибок в твоем коде,
arilou. А C# я плохо знаю, так что если уж на шарпе, то тогда без ошибок плз ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот то же самое на VB:
Сорри за немного туманный первый пост, я думал, если ты заморачиваешься c Reflection, то, возможно, уже ориентируешься в вызовах. Добавлено @ 11:59 в obj будет положен созданный экземпляр. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Возможно, я окончательно отупел
![]() Мой код:
Конструктор Test.Test принимает IGUI,Byte и Byte. Класс GUIClass.Gui реализует интерфейс BaseClass.IGUI. В референсах естессно есть BaseClass.dll и GuiClass.dll. ЧТО НЕ ТАК, НЕ ПОЙМУ! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Посмотри в отладке, что возвращает typ.GetConstructors( ), и есть ли среди полученных конструкторов тот, у которого аргументы совпадают с нужными тебе (с помощью ConstructorInfo.GetParameters( )).
-------------------- ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
По идее все должно работать: параметры - BaseClass.IGUI& , System.Byte и System.Byte.
Странно, может дело в BindingFlags? По крайней мере я решил проблему получением массива конструкторов и инвокированием первого из них.
Всем спасибо, mr.DUDA и arilou, вам плюсы в репу ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Согласен, задачу решает, но надо найти, в чем проблема. Я сегодня забодяжу тест, чтобы проверить. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Run-time error
Я сделал тест:
Подобрал комбинацию BindingFlags, которая нормально работает: BindingFlags.Default Or BindingFlags.Public Or BindingFlags.Instance Попробуй у себя. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Не-а. Не работает
![]() Но это уже не важно ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |