using System; using Equ; using NzbDrone.Core.ThingiProvider; using NzbDrone.Core.Validation; namespace NzbDrone.Core.Notifications { public abstract class NotificationSettingsBase : IProviderConfig, IEquatable where TSettings : NotificationSettingsBase { private static readonly MemberwiseEqualityComparer Comparer = MemberwiseEqualityComparer.ByProperties; public abstract NzbDroneValidationResult Validate(); public bool Equals(TSettings other) { return Comparer.Equals(this as TSettings, other); } public override bool Equals(object obj) { return Equals(obj as TSettings); } public override int GetHashCode() { return Comparer.GetHashCode(this as TSettings); } } }