2019-02-06 17:28:48 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
2021-02-18 11:06:02 +01:00
|
|
|
|
namespace Umbraco.Cms.Core.Events
|
2019-02-06 17:28:48 +01:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Represent event data, for events that support cancellation, and expose an impacted object.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="TEventObject">The type of the exposed, impacted object.</typeparam>
|
|
|
|
|
|
public class CancellableObjectEventArgs<TEventObject> : CancellableObjectEventArgs, IEquatable<CancellableObjectEventArgs<TEventObject>>
|
|
|
|
|
|
{
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public CancellableObjectEventArgs(TEventObject? eventObject, bool canCancel, EventMessages messages, IDictionary<string, object> additionalData)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
: base(eventObject, canCancel, messages, additionalData)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public CancellableObjectEventArgs(TEventObject? eventObject, bool canCancel, EventMessages eventMessages)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
: base(eventObject, canCancel, eventMessages)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public CancellableObjectEventArgs(TEventObject? eventObject, EventMessages eventMessages)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
: base(eventObject, eventMessages)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public CancellableObjectEventArgs(TEventObject? eventObject, bool canCancel)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
: base(eventObject, canCancel)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public CancellableObjectEventArgs(TEventObject? eventObject)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
: base(eventObject)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the impacted object.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// This is protected so that inheritors can expose it with their own name
|
|
|
|
|
|
/// </remarks>
|
2022-01-13 09:27:37 +01:00
|
|
|
|
protected new TEventObject? EventObject
|
2019-02-06 17:28:48 +01:00
|
|
|
|
{
|
2022-01-13 09:27:37 +01:00
|
|
|
|
get => (TEventObject?) base.EventObject;
|
2019-02-06 17:28:48 +01:00
|
|
|
|
set => base.EventObject = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public bool Equals(CancellableObjectEventArgs<TEventObject>? other)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
{
|
|
|
|
|
|
if (other is null) return false;
|
|
|
|
|
|
if (ReferenceEquals(this, other)) return true;
|
|
|
|
|
|
return base.Equals(other) && EqualityComparer<TEventObject>.Default.Equals(EventObject, other.EventObject);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-13 09:27:37 +01:00
|
|
|
|
public override bool Equals(object? obj)
|
2019-02-06 17:28:48 +01:00
|
|
|
|
{
|
|
|
|
|
|
if (obj is null) return false;
|
|
|
|
|
|
if (ReferenceEquals(this, obj)) return true;
|
|
|
|
|
|
if (obj.GetType() != this.GetType()) return false;
|
|
|
|
|
|
return Equals((CancellableObjectEventArgs<TEventObject>)obj);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int GetHashCode()
|
|
|
|
|
|
{
|
|
|
|
|
|
unchecked
|
|
|
|
|
|
{
|
2022-01-13 09:27:37 +01:00
|
|
|
|
if (EventObject is not null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (base.GetHashCode() * 397) ^ EqualityComparer<TEventObject>.Default.GetHashCode(EventObject);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return base.GetHashCode() * 397;
|
2019-02-06 17:28:48 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static bool operator ==(CancellableObjectEventArgs<TEventObject> left, CancellableObjectEventArgs<TEventObject> right)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Equals(left, right);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static bool operator !=(CancellableObjectEventArgs<TEventObject> left, CancellableObjectEventArgs<TEventObject> right)
|
|
|
|
|
|
{
|
|
|
|
|
|
return !Equals(left, right);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|