#include "stdafx.h"
using namespace System;
delegate void OutputMessage(String ^name);
void SayHello(String ^name){
Console::Write("Hello there ");
Console::WriteLine(name);
}
ref class MyClass{
public:
static void Print1(String ^name);
void Print2(String ^name);
void Print3(String ^name);
};
void MyClass::Print1(System::String ^name){
Console::Write("1 ");
Console::WriteLine(name);
}
void MyClass::Print2(System::String ^name){
Console::Write("2 ");
Console::Write(name);
}
void MyClass::Print3(System::String ^name){
Console::Write("3 ");
Console::WriteLine(name);
}
void main(){
OutputMessage^ say;
say = gcnew OutputMessage(&SayHello);
say += gcnew OutputMessage(&MyClass::Print1);
MyClass ^computer = gcnew MyClass();
say = say + gcnew OutputMessage(computer, &MyClass::Print2);
say += gcnew OutputMessage(computer, &MyClass::Print3);
say->Invoke("s1");
say = say - gcnew OutputMessage(&MyClass::Print1);
say -= gcnew OutputMessage(computer, &MyClass::Print3);
say("s1");
}