程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#制作一個消息攔截器(intercept)3

C#制作一個消息攔截器(intercept)3

編輯:C#入門知識

C#制作一個消息攔截器(intercept)3


之前為InterceptAttribute的上下文環境添加了“Intercept”屬性(InterceptProperty),正因為InterceptProperty繼承了IContributeObjectSink,所以我們要實現GetObjectSink(),繼而我們要創建一個繼承ImessageSink的類來作為返回值。

這樣就引發出了InterceptSink類的實現:

public class InterceptSink : IMessageSink
    {
        private IMessageSink nextSink = null;
        public IMessageSink NextSink
        {
            get { return nextSink; }
        }
        public InterceptSink(IMessageSink nextSink)
        {
            Console.WriteLine(" Call 'InterceptSink' - 'Constructor'  ");
            this.nextSink = nextSink;
        }
        
        public IMessage SyncProcessMessage(IMessage msg)
        {
            
            Console.WriteLine("method_name: " + msg.Properties["__MethodName"].ToString());
            IMessage returnMsg = nextSink.SyncProcessMessage(msg);
            return returnMsg;
        }
        public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
        {
            return null;
        }
    }

核心方法是:SyncProcessMessage(Imessage msg)

傳入參數msg中,我們可以找到調用對象方法的相應數據。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved