Erro do compilador C3825
'class': uma classe gerenciada ou WinRT só pode dar suporte a eventos gerenciados ou WinRT
Somente eventos .NET são compatíveis com classes gerenciadas. Apenas eventos Windows Runtime são compatíveis com classes Windows Runtime. Para corrigir esse erro no código gerenciado, altere o parâmetro de tipo de event_source
e event_receiver
de native
para managed
. Como alternativa, remova o atributo.
Exemplo
O seguinte exemplo gera o erro C3825 e mostra como corrigi-lo:
// C3825a.cpp
// compile with: /clr
public delegate void del1();
[event_source(native)] // To fix, change 'native' to 'managed' or delete this line
ref class CEventSrc
{
public:
event del1^ event1; // C3825
void FireEvents() {
event1();
}
};
[event_receiver(native)] // To fix, change 'native' to 'managed' or delete this line
ref class CEventRec
{
public:
void handler1()
{
System::Console::WriteLine("Executing handler1().\n");
}
void HookEvents(CEventSrc^ pSrc)
{
pSrc->event1 += gcnew del1(this, &CEventRec::handler1);
}
void UnhookEvents(CEventSrc^ pSrc)
{
pSrc->event1 -= gcnew del1(this, &CEventRec::handler1);
}
};
int main()
{
CEventSrc^ pEventSrc = gcnew CEventSrc;
CEventRec^ pEventRec = gcnew CEventRec;
pEventRec->HookEvents(pEventSrc);
pEventSrc->FireEvents();
pEventRec->UnhookEvents(pEventSrc);
}