public void Why_Need_Event_When_Delegate_Can_Do_What_Event_Do()
        {
            MyConsolWrite myConsolWrite = MyTest.ConsoleWrite;

            //Event version
            var test1 = new MyTest();

            test1.DummyEvent += myConsolWrite;

            test1.OnDummyEventHappened("I am event");
            //Event version with field
            var test1_1 = new MyTest();

            test1_1.DummyEventProperty += myConsolWrite;

            test1_1.OnDummyEventHappened("I am event");
            //delegate version
            var test2 = new MyTest();

            test2.DummyDelegate = myConsolWrite;
            test2.OnDummyDelegateHappened("I am delegate");

            test2.DummyDelegate = null;


            TestDelegate testDelegate = () => test2.OnDummyDelegateHappened("I will have exception, that's why i should not be a public property/field. danger to be easily override");

            Assert.Throws <NullReferenceException>(testDelegate);
        }