powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вызвать метод в приложении зная его имя
25 сообщений из 28, страница 1 из 2
как вызвать метод в приложении зная его имя
    #38297018
Alexander_fx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет подскажите пожалуйста
есть приложение из нескольких сборок
как вызвать некоторый метод зная его имя
метод может быть в любой сборке принадлежащей приложению
и метод может быть в модуле сборки а не в классе
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297020
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fxи метод может быть в модуле сборки а не в классе
с этого места поподробнее
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #38297042
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
метод класса найти и вызвать легко - System.Reflection
метод "модуля" наверно тоже, только я не знаю что такое "модуль"
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297045
Alexander_fx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

все примеры показывают как получить метод если приложение из одной сборки
а сборок несколько
my.application дает ссылку на главную сборку
как получить ссылку на сборку из которой надо дергать метод?
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297049
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечметод "модуля" наверно тоже, только я не знаю что такое "модуль"
статический класс похоже
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297050
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fxкак получить ссылку на сборку из которой надо дергать метод?
перебрать все загруженные сборки(системные можно игнорировать)
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297063
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЯростный Мечметод "модуля" наверно тоже, только я не знаю что такое "модуль"
статический класс похожеДа.
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #38297088
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fx,

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

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

GetModules возвращает один модуль и так же нет моего метода
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297139
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_fxGetModules возвращает один модуль и так же нет моего метода
модули бейсика и модули CLR - это разные сущности
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #38297176
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAlexander_fxGetModules возвращает один модуль и так же нет моего метода
модули бейсика и модули CLR - это разные сущностивидимо, надо искать статический класс
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #38297203
Alexander_fx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечИзопропилпропущено...

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

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

да уж
вот это помощь
и что гуглить мне по фразе - надо искать статический класс?
ну нечего писать - ну не пишите, а шибко надо 24256 сообщение, велком во флейм.
берёшь домен приложения, смотришь в нем все сборки, в каждой сборке смотришь все типы, находишь нужный, ищешь в нём свой метод что может быть проще? как чё смотреть тебе уже сказали - System.Reflection
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #38297443
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМетод не может быть в модуле (что это?)
Это бейсик.

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

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

Не согласен. Тут есть путаница: Assembly.GetModule
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #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
как вызвать метод в приложении зная его имя
    #38297682
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не там ищешь.

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



Кроме меня этим окошком никто не пользуется что ли?
...
Рейтинг: 0 / 0
как вызвать метод в приложении зная его имя
    #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
25 сообщений из 28, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вызвать метод в приложении зная его имя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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