47 lines
1.1 KiB
C#
47 lines
1.1 KiB
C#
namespace Taloyhtio.GeneralApi.Core.Entities
|
|
{
|
|
public abstract class PersistentObject<T>
|
|
{
|
|
//public const string ID = "Id";
|
|
|
|
public virtual T Id { get; set; }
|
|
|
|
public virtual bool IsPersistent
|
|
{
|
|
get { return isPersistentObject(); }
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (isPersistentObject())
|
|
{
|
|
// see clr via c# by Jeffrey Richter
|
|
if (obj == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (GetType() != obj.GetType())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var persistentObject = obj as PersistentObject<T>;
|
|
return (persistentObject != null) && (this.Id.Equals(persistentObject.Id));
|
|
}
|
|
|
|
return base.Equals(obj);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return isPersistentObject() ? Id.GetHashCode() : base.GetHashCode();
|
|
}
|
|
|
|
private bool isPersistentObject()
|
|
{
|
|
return (!Id.Equals(default(T)));
|
|
}
|
|
}
|
|
}
|