コード例 #1
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformForDialog()
        {
            ReportFeedback rfb = new ReportFeedback(ReportOnDialog);
            DoubleIt       bo  = new DoubleIt();

            bo.DoIt(100, rfb);
        }
コード例 #2
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformForConsole()
        {
            ReportFeedback rfb = new ReportFeedback(ReportOnConsole);
            DoubleIt       bo  = new DoubleIt();

            bo.DoIt(10, rfb);
        }
コード例 #3
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformUsingSyntacticSugar()
        {
            DoubleIt bo = new DoubleIt();

            bo.DoIt(6, ReportOnDialog); //No needs to construct a delegate object.

            //No need to define a callback method, use lambda expression instead.
            bo.DoIt(8, (val) => Console.WriteLine(val));
        }
コード例 #4
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void FancyPerformForAll()
        {
            ReportFeedback rfb1 = new ReportFeedback(ReportOnConsole);
            ReportFeedback rfb2 = new ReportFeedback(ReportOnDialog);

            ReportFeedback rfbChain = null;

            rfbChain += rfb1;
            rfbChain += rfb2;

            DoubleIt bo = new DoubleIt();

            bo.DoIt(100, rfbChain);
        }
コード例 #5
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformForAllUsingInvocationList()
        {
            ReportFeedback rfb1 = new ReportFeedback(ReportOnConsole);
            ReportFeedback rfb2 = new ReportFeedback(ReportOnDialog);

            ReportFeedback rfbChain = null;

            rfbChain += rfb1;
            rfbChain += rfb2;

            Delegate[] delegates = rfbChain.GetInvocationList();
            DoubleIt   bo        = new DoubleIt();

            foreach (ReportFeedback del in delegates)
            {
                bo.DoIt(100, del);
            }
        }
コード例 #6
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformForAll()
        {
            ReportFeedback rfb1 = new ReportFeedback(ReportOnConsole);
            ReportFeedback rfb2 = new ReportFeedback(ReportOnDialog);

            //Delegate.Combine combines null and rfb1.
            //Now both rfbChain and rfb1 point to same delegate object. Please note invocation list (_invocationList) is null so far.
            //When rfbChain and rfb2 are combined, _invocationList has items pointing to rfb1 and rfb2. Now, rfbChain points to delegate object having that _invocationlist.

            ReportFeedback rfbChain = null;

            rfbChain = (ReportFeedback)Delegate.Combine(rfbChain, rfb1);
            rfbChain = (ReportFeedback)Delegate.Combine(rfbChain, rfb2);

            DoubleIt bo = new DoubleIt();

            bo.DoIt(100, rfbChain);
        }
コード例 #7
0
ファイル: Example.cs プロジェクト: Kushal44/CLRInPractice
        public void PerformForNone()
        {
            DoubleIt bo = new DoubleIt();

            bo.DoIt(10, null);
        }