Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public delegate void f(int);
- public ref struct E {
- f ^ _E;
- public:
- void handler(int i) {
- System::Console::WriteLine(i);
- }
- E() {
- _E = nullptr;
- }
- event f^ Event {
- void add(f ^ d) {
- _E += d;
- }
- void remove(f ^ d) {
- _E -= d;
- }
- void raise(int i) {
- f^ tmp = _E;
- if (tmp) {
- tmp->Invoke(i);
- }
- }
- }
- static void Go() {
- E^ pE = gcnew E;
- pE->Event += gcnew f(pE, &E::handler);
- pE->Event(17);
- }
- };
- int main() {
- E::Go();
- }
- public ref class MyClass
- {
- public:
- event System::EventHandler ^ MyEvent;
- };
- public class MyClass
- {
- // Fields
- private EventHandler <backing_store>MyEvent;
- // Events
- public event EventHandler MyEvent
- {
- [MethodImpl(MethodImplOptions.Synchronized)] add
- {
- this.<backing_store>MyEvent = (EventHandler) Delegate.Combine(this.<backing_store>MyEvent, value);
- }
- [MethodImpl(MethodImplOptions.Synchronized)] remove
- {
- this.<backing_store>MyEvent = (EventHandler) Delegate.Remove(this.<backing_store>MyEvent, value);
- }
- raise
- {
- EventHandler <tmp> = null;
- <tmp> = this.<backing_store>MyEvent;
- if (<tmp> != null)
- {
- <tmp>(value0, value1);
- }
- }
- }
- }
- // event keyword introduces the scope wherein I'm defining the required methods
- // "f" is my delegate type
- // "Event" is the unrealistic name of the event itself
- event f^ Event
- {
- // add is public (because the event block is public)
- // "_E" is the private delegate data member of type "f"
- void add(f ^ d) { _E += d; }
- // making remove private
- private:
- void remove(f ^ d) { _E -= d; }
- // making raise protected
- protected:
- void raise(int i)
- {
- // check for nullptr
- if (_E)
- {
- _E->Invoke(i);
- }
- }
- }// end event block
Add Comment
Please, Sign In to add comment