原文地址:点击打开链接
#region 清除事件绑定的函数
///
/// 清除事件绑定的函数
///
/// 拥有事件的实例
/// 事件名称
public static void ClearAllEvents(object objectHasEvents, string eventName)
{
if (objectHasEvents == null)
{
return;
}
try
{
EventInfo[] events = objectHasEvents.GetType().GetEvents(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
if (events == null || events.Length < 1)
{
return;
}
for (int i = 0; i < events.Length; i++)
{
EventInfo ei = events[i];
if (ei.Name == eventName)
{
FieldInfo fi = ei.DeclaringType.GetField(eventName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
if (fi != null)
{
fi.SetValue(objectHasEvents, null);
}
break;
}
}
}
catch
{
}
}
#endregion