Due anni e mezzo fa, parlavo in questo post, di tre eventi all'interno delle classi del framework, tutti e tre nell'assembly Microsoft.VisualBasic.dll, provvisti non solo dei classici accessor add e remove, ma anche di raise (.fire in IL), accessor che non esiste ancora in C# e finivo il post chiedendomi in quale linguaggio sia stato scritto quell'assembly, Microsoft.VisualBasic.dll.
E oggi scopro che C++/CLI (ECMA-372, 19.6.2) mette a disposizione tre accessor anziche' due: add, remove e raise. Quindi, lo snippet del mio vecchio post, diventa in C++/CLI:
delegate void FooFiredEvent();
ref class Foo {
FooFiredEvent^ m_FooFired;
public: event FooFiredEvent^ FooFired {
void add(FooFiredEvent^ value) {
m_FooFired += value;
}
void remove(FooFiredEvent^ value) {
m_FooFired -= value;
}
void raise() {
if(m_FooFired) {
m_FooFired();
}
}
}
};