[CommunityServer]事件代理

简介:

在我们添加到数据库时要验证数据是否符合我们所要求的格式。但我们又不知道有多少数据后数据验证的方法,这样我们举可以用代理来完成,以达到我们的目的。在CommunityServer中的代理易于扩展,值得我们学习学习,下面我们来看看他是怎么个执行过程。
  
  1.CSApplication.cs:这个文件中包含了所有代理事件,极其事件代理方法类的初始化。

 1 ContractedBlock.gif        Delegates

  以上代理就是相对应事件的处理方法,而这些代理的方法类必须继承ICSModule接口,以得到相对应得处理方法。在CSApplication的构造函数中我们可以看到,从配置文件中获取"CommunityServer/csmodules"节点的数据并进行实例化,如果不成功将会抛出错误,并将得到的实例列表缓存。

  2.CSEventArgs.cs:这个文件中包含了CSEventArgs,CSPostEventArgs,CSAcceptUserInvitationEventArgs事件。CSEventArgs是CommunityServer所有事件的基类,继承于EventArgs;CAPostEventArgs是关于Post的事件,所有发布的帖子或文章等所引发的事件,继承于CSEventArgs类;CSAcceptUserInvitationEventArgs当邀请某个用户加入会员是所引发的事件,继承于CSEventArgs类。各个事件都包含各自的数据。

  3.ICSModule.cs:这个文件包含了ICSModule接口,只有一个方法,可以通过继承这个接口定义事件处理方法,并在配置文件中的"CommunityServer/csmodules"节点标示,使得能够被CSApplication类实例化。

 4.CSEvents.cs:包含验证的静态方法,我们可以调用这里的方法即可实现我们所想得到的结果。

  下面我们来看一下执行的顺序(比如我们要加入一个用户):首先我们调用CSEvents.BeforeUser(User user, ObjectState state)来验证我们的用户数据;CSEvents.BeforeUser(User user, ObjectState state)有调用CSApplication.Instance().ExecutePreUserUpdate(user,state),从CSApplication类中文们可以知道:CSApplication.Instance()先从缓存中搜索CSApplication对象,如果不存在则加载配置文件中的"CommunityServer/csmodules"节点的数据并进行实例化,如果不成功将会抛出错误,并将得到的实例列表缓存;初始化后我们可以知道ExecutePreUserUpdate(user,state)方法所对应的键值在EventHandlerList处理方法中所对应的事件,因此把数据传输给public event CSUserEventHandler PreUserUpdate事件在CSApplication中所对应的处理方法类public class CSValidationModule : ICSModule;从而得到了事件处理的方法:private void csa_PreUserUpdate(User user, CSEventArgs e),并执行。


本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2006/11/17/communityserver_event_delegate.html,如需转载请自行联系原作者

相关文章
|
5月前
事件代理和事件委托
事件代理和事件委托
42 6
|
5月前
什么是事件代理?什么事件委托?
什么是事件代理?什么事件委托?
40 0
|
8天前
|
监控 JavaScript 前端开发
|
7天前
|
JavaScript 前端开发 API
你真的理解事件绑定、事件冒泡和事件委托吗?
该文章详细解释了JavaScript中的事件绑定机制、事件冒泡行为以及事件委托技术,并通过实例帮助读者更好地理解和应用这些概念。
|
26天前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
17 0
|
4月前
|
索引
事件委托是什么
事件委托是什么
|
5月前
|
JavaScript 前端开发
什么是事件代理?什么是事件委托?
什么是事件代理?什么是事件委托?
60 6
|
5月前
|
前端开发 JavaScript 容器
前端中的事件委托
前端中的事件委托
70 0
|
5月前
|
JavaScript
浅浅的说下dom的事件流和事件委托
浅浅的说下dom的事件流和事件委托