-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(baseEntity) : add notifications
- Loading branch information
1 parent
8ee1ba9
commit 07cdfea
Showing
2 changed files
with
94 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
namespace Product.Domain.Entities; | ||
|
||
public class BaseEntity | ||
{ | ||
int? _requestedHashCode; | ||
int _Id; | ||
public virtual int Id | ||
{ | ||
get | ||
{ | ||
return _Id; | ||
} | ||
protected set | ||
{ | ||
_Id = value; | ||
} | ||
} | ||
|
||
private List<INotification> _domainEvents; | ||
public IReadOnlyCollection<INotification> DomainEvents => _domainEvents?.AsReadOnly(); | ||
|
||
public void AddDomainEvent(INotification eventItem) | ||
{ | ||
_domainEvents = _domainEvents ?? new List<INotification>(); | ||
_domainEvents.Add(eventItem); | ||
} | ||
|
||
public void RemoveDomainEvent(INotification eventItem) | ||
{ | ||
_domainEvents?.Remove(eventItem); | ||
} | ||
|
||
public void ClearDomainEvents() | ||
{ | ||
_domainEvents?.Clear(); | ||
} | ||
|
||
public bool IsTransient() | ||
{ | ||
return this.Id == default; | ||
} | ||
|
||
public override bool Equals(object obj) | ||
{ | ||
if (!(obj is BaseEntity)) | ||
return false; | ||
|
||
if (Object.ReferenceEquals(this, obj)) | ||
return true; | ||
|
||
if (this.GetType() != obj.GetType()) | ||
return false; | ||
|
||
BaseEntity item = (BaseEntity)obj; | ||
|
||
if (item.IsTransient() || this.IsTransient()) | ||
return false; | ||
else | ||
return item.Id == this.Id; | ||
} | ||
|
||
public override int GetHashCode() | ||
{ | ||
if (!IsTransient()) | ||
{ | ||
if (!_requestedHashCode.HasValue) | ||
_requestedHashCode = this.Id.GetHashCode() ^ 31; // XOR for random distribution (http://blogs.msdn.com/b/ericlippert/archive/2011/02/28/guidelines-and-rules-for-gethashcode.aspx) | ||
|
||
return _requestedHashCode.Value; | ||
} | ||
else | ||
return base.GetHashCode(); | ||
|
||
} | ||
public static bool operator ==(BaseEntity left, BaseEntity right) | ||
{ | ||
if (Object.Equals(left, null)) | ||
return (Object.Equals(right, null)) ? true : false; | ||
else | ||
return left.Equals(right); | ||
} | ||
public static bool operator !=(BaseEntity left, BaseEntity right) | ||
{ | ||
return !(left == right); | ||
} | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace Product.Domain.Entities; | ||
|
||
public interface INotification | ||
{ | ||
|
||
} |