using System; using Equ; using NzbDrone.Core.ThingiProvider; using NzbDrone.Core.Validation; namespace NzbDrone.Core.ImportLists { public abstract class ImportListSettingsBase : IProviderConfig, IEquatable where TSettings : ImportListSettingsBase { 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); } } }