绑定到List 中的Eventhandler

通常,我们使用如下方式来为列表注册一个Eventhandler 事件处理程序:

SPSite site = new SPSite(siteurl);
site.OpenWeb(weburl);
SPList list = web.Lists[列表名字];
list.EventReceivers.Add(事件类型,程序集名称,类名);
每个 SPList 对象都具有一个 EventReceivers 集合。EventReceivers 集合公开了一个具有三种不同重载实现的 Add 方法。这个Add 方法是添加Eventhandler 的最简单方法,它要求传递三个参数。如果您希望通过代码绑定事件处理程序,至少必须提供程序集的名称、命名空间限定的类名,以及使用来自 WSS 对象模型的SPEventReceiverType 枚举的事件类型。调用 Add 方法是最简单的方法,但不是在所有情况下都很灵活。


以下代码说明了一个更加复杂的方法,其中事件处理程序绑定通过直接对SPEventReceiverDefinition 对象进行编程来完成。这样您就有机会为绑定指定一个特定的
GUID 标识符,以便可以更轻松地添加和删除它们。它还使您能够初始化SequenceNumber 属性和 Data 属性。
SPList SalesLeadsList=web.Lists[列表名字];
SPEventReceiverDefinitionCollection receivers;
receivers = SalesLeadsList.EventReceivers;
Guid ItemAddingDefId=new Guid();
ItemAddingDefId = new
Guid("2D96ADCE-E7A9-461b-8DB6-1E4309419503");//指定Guid
if(!receivers.EventReceiverDefinitionExist(ItemAddingDefId))
{
SPEventReceiverDefinition ItemAddingDef;
ItemAddingDef = receivers.Add(ItemAddingDefId);
ItemAddingDef.Name = "ItemDeleteingHandler";
ItemAddingDef.Type = 事件类型;
ItemAddingDef.Assembly = 程序集名称;
ItemAddingDef.Class = 类名;
ItemAddingDef.Data = "today";
ItemAddingDef.SequenceNumber = 1001;
ItemAddingDef.Update();
}
这样我们就为该程序集指定了一个Guid,并通过这个Guid 来删除掉它。
if (receivers.EventReceiverDefinitionExist(ItemAddingDefId))
{
receivers[ItemAddingDefId].Delete();
}
小结:单纯的从GAC 里将Eventhandler 卸载了,在执行添加更新删除时,列表肯定还会去找。

你可能感兴趣的:(handler)