Использование события как в управляемом, так и в неуправляемом коде

#c #events #visual-studio-2017 #clr #managed-c

#c #Мероприятия #visual-studio-2017 #clr #управляемый-c

Вопрос:

В основном я работал над неуправляемым кодом, в последнее время для своей работы мне приходится использовать проекты на CLI / C . Некоторые файлы представляют собой неуправляемый код, поэтому при включении я использую #pragma managed(push, off) , что я видел в полностью неуправляемых кодах, мы использовали event и deligate в классах Ref.

 event someHandler^ someEvent;
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
  

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

Управляемый класс, в котором я буду игнорировать событие (события) и делегировать…

 public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
    class ModelView{
       managedCpp::sharedPtr ^ memberPtr
     public:
       event someHandler^ someEvent;
       ModelView(){
          memberPtr= gcnew managedCpp::sharedPtr<std::string>
       }
       //some other functions
       // a getter() to get the memberPtr
       // a setter() to set the value of memberPtr
    }
  

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

Когда я включаю в управляемый класс, он выдает ошибку.

 error C3821: 'memberPtr': managed type or function cannot be used in an unmanaged function
  

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