C#制作一个消息拦截器(intercept)4

ok,我们拦截器基本构造完成,接下来我来告诉大家如何去使用。

注意一个问题,object拦截器我们要拦截什么,那么我们就要在需要拦截的类上面做手脚了。

首先,创建我们需要被拦截的类。

然后,我们再对类进行相应的包装:

1、该类要标记InterceptAttribute属性

2、该类要继承ContextBoundObject,只有继承ContextBoundObject的类,vs才能知道该类需要访问Context,这样标记的InterceptAttribute才有效。

/// <summary>
    /// If you want to add the interceptpool on this class , the class need to do:
    /// 1、inherited form ContextBoundObject.
    /// 2、mark the InterceptAttribute.
    /// </summary>
    [Intercept]
    public class SimonDemo:ContextBoundObject
    {
        public SimonDemo()
        {
            Console.WriteLine(" Call 'SimonDemo' - 'Constructor'  ");
        }
        public void Operate1()
        {
            Console.WriteLine("Call 'SimonDemo' - 'Operate1' ");
        }
    }

然后,我们在Main函数中创建一个该类的对象,并进行调用方法。

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Call Main ..");

            SimonDemo simon = new SimonDemo();
            simon.Operate1();

            Console.WriteLine("exit Main ..");
            Console.Read();
        }
    }

这样,通过调试,我们就可以看出拦截器都拦截出了什么

接下来是运行结果:

这样可以看出我的程序拦截,并输出了调用函数的名字。

在此仅提供一种方法,其余的使用方法有待研究。

写到这里我的拦截器实现完了,小弟了解尚浅,如有错误请高手们留言指出。

C#制作一个消息拦截器(intercept)4

时间: 2024-10-11 22:19:51

C#制作一个消息拦截器(intercept)4的相关文章

C#制作一个消息拦截器(intercept)1

首先,我们先要制作一个自定义Attribute,让他可以具有上下文读取功能,所以我们这个Attribute类要同时继承Attribute和IContextAttribute. 接口IContextAttribute中有两个方法需要实现 1.bool   IsContextOK(Context ctx, IConstructionCallMessage msg); 2.void  GetPropertiesForNewContext(IConstructionCallMessage msg); 简

C#制作一个消息拦截器(intercept)3

之前为InterceptAttribute的上下文环境添加了"Intercept"属性(InterceptProperty),正因为InterceptProperty继承了IContributeObjectSink,所以我们要实现GetObjectSink(),继而我们要创建一个继承ImessageSink的类来作为返回值. 这样就引发出了InterceptSink类的实现: public class InterceptSink : IMessageSink { private IMe

openfire开发(四)消息拦截器

大家好,我是LD,今天给大家介绍openfire的消息拦截器.通常,我们在开发插件的过程中会有一种需求,需要对客户端发送的消息来做一些我们自己的处理,比如保存数据等等.这里我们就会使用到拦截器, 在openfire中,自定义拦截器需要实现PacketInterceptor接口.下面我们写一个简单的拦截器来介绍一下. import org.jivesoftware.openfire.interceptor.PacketInterceptor; import org.jivesoftware.ope

开发openfire 消息拦截器插件PacketInterceptor

开发消息拦截器的步骤跟开发简单插件步骤一样,要开发消息拦截器插件,首先继承PacketInterceptor包拦截类,然后在initializelPlugin()方法中注册拦截器,就可以实现interceptPackage()方法中拦截包(即此方法中的packet参数)了.并且,可以通过入参incoming来判断是服务器发送的包还是接受的包(注:true为服务器接收的包:false为发出的包).processed参数用处暂不明,猜想是对请求做了什么处理的标识,但不影响我们对包进行拦截和处理. 这

Struts 2知识回顾----拦截器(Intercept)总结

什么是Struts 2拦截器? 从软件构架上来说,拦截器是实现了面向方面编程的组件.它将影响了多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现功能的高度内聚,确保了业务对象的整洁和纯度. 从Java代码上来说,它就是一个普度的Java对象,它只需要实现一个名为Interceptor的接口. 为什么要使用拦截器? 拦截器消除了动作组件中的横切任务(cross-cutting task).例如,日志记录是一个典型的横切关注.以前,我们可能需要为每个动作组件准备一些记录日志的

【spring-boot】spring-boot项目中,通过thymleaf实现登录功能,这里是一个登录拦截器的参考代码

我们在实现网页登录操作时,需要对网页进行保护(权限控制),将没有没有登录到请求拦截在系统之外,那么这里可以通过一个拦截器实现该功能 以下是LoginHanderInterceptor.java的参考代码: package com.springboot.conponent; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; i

使用Windows Form 制作一个简易资源管理器

自制一个简易资源管理器----TreeView控件 第一步.新建project,进行基本设置:(Set as StartUp Project:View/Toolbox/TreeView) 第二步.开始添加节点 添加命名空间using System.IO; 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Dra

QT制作一个图片播放器

前言:使用qt制作了一个简单的图片播放器,可以播放gif.png等格式图片 先来看看播放器的功能(当然是很简陋的,没有很深入的设计): 1.点击图片列表中图片进行播放. 2.自动播放,播放的图片的间隔时间可以自己设定,时间的单位是秒. 3.自动播放的时候再点击图片列表会停止自动播放,保存当前播放的图片的顺序,再次点击自动播放的时候将从当前开始. 4.自动播放到最后一张图片的时候将会停止自动播放,再次点击自动播放的时候将会从第一张图片开始. 先上图看看具体功能: 说完功能我们聊聊制作思路和使用到的

怎么给登录功能设一个访问拦截器

1 <mvc:interceptors> 2 <mvc:interceptor> 3 <mvc:mapping path="/my/cbs/**"/> 4 <mvc:mapping path="/member/**"/> 5 ....... 6 <bean id="loginInterceptor" class="com.jinqiandun.cloud.cp.utility.Log