На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> Выполнить функцию при динамической загрузки библиотеки, C#
    Можно ли как-то выполнить функцию в момент загрузки библиотеки.

    сейчас я загружаю библиотеку. нахожу класс и создаю его. а уже в конструкторе выполняется некое действие.
    Но это не удобно так как нужно знать имя класса включая пространственное имя.

    ExpandedWrap disabled
      var assembly = Assembly.LoadFile(LibName);
      var mytype = assembly.GetType(MyTypeName, true, true);
      var myclass = Activator.CreateInstance(mytype);


    В плюсовой библиотеки есть "entry point" в которой можно сделать некоторое действие. Пошарился по msdn и ничего не нашел подобного для C#.
    select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc limit 1
      Цитата ViktorXP @
      Можно ли как-то выполнить функцию в момент загрузки библиотеки.

      В плюсовой библиотеки есть "entry point" в которой можно сделать некоторое действие.

      Что подразумевается под "entry point" - DllMain ?
      Дело в том, что ещё до "DLL_PROCESS_ATTACH"
      вызываются конструкторы экземпляров классов, объявленных
      как глобальные переменные.
      Это значит, что у dll-ей (как и у exe-модулей) есть свой "startup".
      ---
      Значит, можно попробовать сделать это (если это вообще возможно в C#).
      (я C# не использовал, но для c++ это точно. Вообще именно так и должно быть у Виндуса.)
      ---
      Причём, конструктор такого экземпляра класса будет вызван до DLL_PROCESS_ATTACH,
      а деструктор - после DLL_PROCESS_DETACH.
      Сообщение отредактировано: ЫукпШ -
      Подпись была выключена в связи с наложенным заземлением.
        Цитата ЫукпШ @
        Причём, конструктор такого экземпляра класса будет вызван до DLL_PROCESS_ATTACH,
        а деструктор - после DLL_PROCESS_DETACH.

        в том и печаль что в шарпе конструктор класса не срабатывает в библиотеке. да и в exe он не срабатывает если класс нигде не используется :no-sad:

        Добавлено
        Цитата ЫукпШ @
        как глобальные переменные.

        в c# нет глобальных переменных, в привычном поминании.
        есть классовые переменные. их можно рассматривать как глобальные, но они не инициализируются без инициализации самого класса ((
        select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc limit 1
          Цитата ViktorXP @
          в c# нет глобальных переменных, в привычном поминании.
          есть классовые переменные.

          Можно ли объявить статический экземпляр класса,
          как переменную другого класса ?
          Сообщение отредактировано: ЫукпШ -
          Подпись была выключена в связи с наложенным заземлением.
            Может быть эта ссылка как то поможет: https://stackoverflow.com/questions/8206736...ain-in-c-winapi
              Цитата ЫукпШ @
              Можно ли объявить статический экземпляр класса,
              как переменную другого класса ?

              можно. но если этот класс не будет использован то переменная не инициализируется ))

              Добавлено
              Цитата Wound @
              Может быть эта ссылка как то поможет: https://stackoverflow.com/questions/8206736...ain-in-c-winapi

              а вот это идея... пометить класс атрибутом и искать по атрибуту.
              select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc limit 1
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script Execution time: 0,1252 ]   [ 18 queries used ]   [ Generated: 22.10.19, 03:34 GMT ]