using System; using Equ; using NzbDrone.Core.Datastore; namespace NzbDrone.Core.Movies { public abstract class Entity : ModelBase, IEquatable where T : Entity { private static readonly MemberwiseEqualityComparer _comparer = MemberwiseEqualityComparer.ByProperties; public virtual void UseDbFieldsFrom(T other) { Id = other.Id; } public virtual void UseMetadataFrom(T other) { } public virtual void ApplyChanges(T other) { } public bool Equals(T other) { return _comparer.Equals(this as T, other); } public override bool Equals(object obj) { return Equals(obj as T); } public override int GetHashCode() { return _comparer.GetHashCode(this as T); } } }