Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вызвать метод в приложении зная его имя / 25 сообщений из 28, страница 1 из 2
13.06.2013, 23:04
    #38297018
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
привет подскажите пожалуйста
есть приложение из нескольких сборок
как вызвать некоторый метод зная его имя
метод может быть в любой сборке принадлежащей приложению
и метод может быть в модуле сборки а не в классе
...
Рейтинг: 0 / 0
13.06.2013, 23:06
    #38297020
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxи метод может быть в модуле сборки а не в классе
с этого места поподробнее
...
Рейтинг: 0 / 0
13.06.2013, 23:08
    #38297023
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Изопропил,

Namespace issled
Public Module mdl_Main

Public Sub test1()
End Sub

Public Class test_class
Public Sub test2()

End Sub
End Class
End Module
End Namespace


вопрос как вызвать test1 и test2
...
Рейтинг: 0 / 0
13.06.2013, 23:35
    #38297042
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
метод класса найти и вызвать легко - System.Reflection
метод "модуля" наверно тоже, только я не знаю что такое "модуль"
...
Рейтинг: 0 / 0
13.06.2013, 23:38
    #38297045
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Яростный Меч,

все примеры показывают как получить метод если приложение из одной сборки
а сборок несколько
my.application дает ссылку на главную сборку
как получить ссылку на сборку из которой надо дергать метод?
...
Рейтинг: 0 / 0
13.06.2013, 23:42
    #38297049
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Яростный Мечметод "модуля" наверно тоже, только я не знаю что такое "модуль"
статический класс похоже
...
Рейтинг: 0 / 0
13.06.2013, 23:43
    #38297050
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxкак получить ссылку на сборку из которой надо дергать метод?
перебрать все загруженные сборки(системные можно игнорировать)
...
Рейтинг: 0 / 0
14.06.2013, 00:02
    #38297063
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
ИзопропилЯростный Мечметод "модуля" наверно тоже, только я не знаю что такое "модуль"
статический класс похожеДа.
...
Рейтинг: 0 / 0
14.06.2013, 00:16
    #38297085
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Antonariy,

что то не выходит каменный цветок

перебираю
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 

сбока test
sub test1
end sub


sub main
Dim method As MethodInfo
  For Each ass In AppDomain.CurrentDomain.GetAssemblies
                Dim n = ass.GetName(True)
                If n.Name = "test" Then
                    method=ass.GetType.GetMethod("test1")
                end if
 next
end sub 
method всегда nothing несмотря на то что есть такая sub в нужной сборке
...
Рейтинг: 0 / 0
14.06.2013, 00:19
    #38297088
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fx,

так метод внутри модуля, надо сначала модуль найти, а потом в нем метод искать.
...
Рейтинг: 0 / 0
14.06.2013, 00:57
    #38297129
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Яростный МечAlexander_fx,

так метод внутри модуля, надо сначала модуль найти, а потом в нем метод искать.

GetModules возвращает один модуль и так же нет моего метода
...
Рейтинг: 0 / 0
14.06.2013, 01:05
    #38297139
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxGetModules возвращает один модуль и так же нет моего метода
модули бейсика и модули CLR - это разные сущности
...
Рейтинг: 0 / 0
14.06.2013, 01:06
    #38297140
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fx,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 For Each assembly In AppDomain.CurrentDomain.GetAssemblies
                            Dim name = assembly.GetName(True)
                            If name.Name = "MYWPF" Then
                                For Each mdl In assembly.GetModules
                                    method = mdl.GetType.GetMethod("test1")
                                    If IsNothing(method) = False Then MsgBox("bingo")
                                Next
                            End If
                        Next



вот так пробую но не вижу свой паблик метод
...
Рейтинг: 0 / 0
14.06.2013, 01:49
    #38297176
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
ИзопропилAlexander_fxGetModules возвращает один модуль и так же нет моего метода
модули бейсика и модули CLR - это разные сущностивидимо, надо искать статический класс
...
Рейтинг: 0 / 0
14.06.2013, 02:11
    #38297203
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Яростный МечИзопропилпропущено...

модули бейсика и модули CLR - это разные сущностивидимо, надо искать статический класс

да уж
вот это помощь
и что гуглить мне по фразе - надо искать статический класс?
ну нечего писать - ну не пишите, а шибко надо 24256 сообщение, велком во флейм.
...
Рейтинг: 0 / 0
14.06.2013, 08:24
    #38297276
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxда уж
вот это помощь
за вас код нужно написать ? - так это в "Работа"
...
Рейтинг: 0 / 0
14.06.2013, 09:58
    #38297379
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxЯростный Мечпропущено...
видимо, надо искать статический класс

да уж
вот это помощь
и что гуглить мне по фразе - надо искать статический класс?
ну нечего писать - ну не пишите, а шибко надо 24256 сообщение, велком во флейм.
берёшь домен приложения, смотришь в нем все сборки, в каждой сборке смотришь все типы, находишь нужный, ищешь в нём свой метод что может быть проще? как чё смотреть тебе уже сказали - System.Reflection
...
Рейтинг: 0 / 0
14.06.2013, 10:19
    #38297417
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Alexander_fxкак вызвать метод в приложении зная его имя
Методов у приложения не бывает.

Alexander_fxесть приложение из нескольких сборок
как вызвать некоторый метод зная его имя
Метод чего, приложения или сборок? По первому: см. выше. По второму: методов у сборок не бывает.

Alexander_fxметод может быть в любой сборке принадлежащей приложению
См. выше. Методов у сборок не бывает.

Alexander_fxи метод может быть в модуле сборки а не в классе
Метод не может быть в модуле (что это?). Метод не может быть в сборке (см. выше). Метод может быть только у класса .

Итого, чтобы вызвать метод класса, нужно:

1. Обратиться к экземпляру класса.
2. Чтобы обратиться к экземпляру класса, нужно его инстанциировать (Activator.CreateInstance или Assembly.CreateInstance для динамической инстанциации).
3. Для того, чтобы инстанциировать класс, нужно знать его определение (тип).
4. Для того, чтобы знаеть его определение, нужно загрузить типы.
5. Для того, чтобы загрузить типы, нужно обратиться к сборке.
6. Для того, чтобы обратиться к сборке, нужно работать с классом Assembly из System.Reflection (есть возможность подгружать сборку из файла)

А теперь к практике: http://codearticles.ru/articles/2310
http://codearticles.ru/articles/1388
http://codearticles.ru/articles/1386

Вопросы, пожелания?
...
Рейтинг: 0 / 0
14.06.2013, 10:30
    #38297443
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
МСУМетод не может быть в модуле (что это?)
Это бейсик.

"Модуль" в смысле бейсика - это просто статический класс.
...
Рейтинг: 0 / 0
14.06.2013, 10:32
    #38297447
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
pationберёшь домен приложения, смотришь в нем все сборки, в каждой сборке смотришь все типы, находишь нужный, ищешь в нём свой метод что может быть проще?
судя по стартовому посту нужно в каждой сборке, загруженной в домен, перебрать все типы и найти в них статические методы с заданным именем
...
Рейтинг: 0 / 0
14.06.2013, 10:41
    #38297474
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
ИзопропилМСУМетод не может быть в модуле (что это?)
Это бейсик.

"Модуль" в смысле бейсика - это просто статический класс.

Не согласен. Тут есть путаница: Assembly.GetModule
...
Рейтинг: 0 / 0
14.06.2013, 11:26
    #38297548
Tamozhnya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Конкретно для работы с модулями есть Module Class:
http://msdn.microsoft.com/en-us/library/system.reflection.module.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2

У него есть Module.GetMethod Method (String):
http://msdn.microsoft.com/en-us/library/6t16athe.aspx

У класса Assembly есть метод GetModules(). Как перебирать ассембли вроде уже обсудили.
...
Рейтинг: 0 / 0
14.06.2013, 12:37
    #38297643
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
всем ответившим спасибо.
но так же просьба - прежде чем отвечать читать не последний пост в ветке а хоть текущую страницу.
я указал код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 For Each assembly In AppDomain.CurrentDomain.GetAssemblies
                            Dim name = assembly.GetName(True)
                            If name.Name = "MYWPF" Then
                                For Each mdl In assembly.GetModules
                                    method = mdl.GetType.GetMethod("test1")
                                    If IsNothing(method) = False Then MsgBox("bingo")
                                Next
                            End If
                        Next


и что толку давать советы типа перебрать сборки приложения и получить рефлексией нужный тебе метод.
в коде это все присутсвует.
Текущая проблема в том что даже перебрав все модули, я не нахожу свой метод.
...
Рейтинг: 0 / 0
14.06.2013, 13:10
    #38297682
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
Не там ищешь.

Код: vbnet
1.
For Each mdl In assembly.ExportedTypes



Кроме меня этим окошком никто не пользуется что ли?
...
Рейтинг: 0 / 0
14.06.2013, 13:26
    #38297706
Alexander_fx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать метод в приложении зная его имя
я так думаю у меня проблема не найти тип
а найти статический метод самой сборки ( который в бейские обьявляется в модуле вот так)

Код: vbnet
1.
2.
3.
4.
public module test_module
   public sub test_sub
   end sub
end module



делаю перебор вот так

Код: vbnet
1.
2.
3.
4.
5.
6.
For Each mdl In assembly.ExportedTypes
                        name = mdl.Name
                        If name = "mdl_Main" Then
                            method = mdl.GetType().GetMethod("test1")
                        End If
                    Next


и все равно нет моего метода
может потому что я ищу его в типе а не в инстансе.
в общем нид хелп
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вызвать метод в приложении зная его имя / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]