Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.139.82.23] |
|
Сообщ.
#1
,
|
|
|
Можно ли как-то выполнить функцию в момент загрузки библиотеки.
сейчас я загружаю библиотеку. нахожу класс и создаю его. а уже в конструкторе выполняется некое действие. Но это не удобно так как нужно знать имя класса включая пространственное имя. var assembly = Assembly.LoadFile(LibName); var mytype = assembly.GetType(MyTypeName, true, true); var myclass = Activator.CreateInstance(mytype); В плюсовой библиотеки есть "entry point" в которой можно сделать некоторое действие. Пошарился по msdn и ничего не нашел подобного для C#. |
Сообщ.
#2
,
|
|
|
Цитата ViktorXP @ Можно ли как-то выполнить функцию в момент загрузки библиотеки. В плюсовой библиотеки есть "entry point" в которой можно сделать некоторое действие. Что подразумевается под "entry point" - DllMain ? Дело в том, что ещё до "DLL_PROCESS_ATTACH" вызываются конструкторы экземпляров классов, объявленных как глобальные переменные. Это значит, что у dll-ей (как и у exe-модулей) есть свой "startup". --- Значит, можно попробовать сделать это (если это вообще возможно в C#). (я C# не использовал, но для c++ это точно. Вообще именно так и должно быть у Виндуса.) --- Причём, конструктор такого экземпляра класса будет вызван до DLL_PROCESS_ATTACH, а деструктор - после DLL_PROCESS_DETACH. |
Сообщ.
#3
,
|
|
|
Цитата ЫукпШ @ Причём, конструктор такого экземпляра класса будет вызван до DLL_PROCESS_ATTACH, а деструктор - после DLL_PROCESS_DETACH. в том и печаль что в шарпе конструктор класса не срабатывает в библиотеке. да и в exe он не срабатывает если класс нигде не используется Добавлено Цитата ЫукпШ @ как глобальные переменные. в c# нет глобальных переменных, в привычном поминании. есть классовые переменные. их можно рассматривать как глобальные, но они не инициализируются без инициализации самого класса (( |
Сообщ.
#4
,
|
|
|
Цитата ViktorXP @ в c# нет глобальных переменных, в привычном поминании. есть классовые переменные. Можно ли объявить статический экземпляр класса, как переменную другого класса ? |
Сообщ.
#5
,
|
|
|
Может быть эта ссылка как то поможет: https://stackoverflow.com/questions/8206736...ain-in-c-winapi
|
Сообщ.
#6
,
|
|
|
Цитата ЫукпШ @ Можно ли объявить статический экземпляр класса, как переменную другого класса ? можно. но если этот класс не будет использован то переменная не инициализируется )) Добавлено Цитата Wound @ Может быть эта ссылка как то поможет: https://stackoverflow.com/questions/8206736...ain-in-c-winapi а вот это идея... пометить класс атрибутом и искать по атрибуту. |