From e84c6edce152a05c903286c0bfbaa0c2e187602d Mon Sep 17 00:00:00 2001 From: Syntriax Date: Wed, 4 Mar 2026 20:16:07 +0300 Subject: [PATCH] refactor: removed the IComparable from IIdentifiable and implemented in extension method --- Engine.Core/Abstract/IIdentifiable.cs | 2 +- Engine.Core/BaseEntity.cs | 2 -- Engine.Core/Extensions/IdentifiableExtensions.cs | 7 ++++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Engine.Core/Abstract/IIdentifiable.cs b/Engine.Core/Abstract/IIdentifiable.cs index 403cace..c4cd50a 100644 --- a/Engine.Core/Abstract/IIdentifiable.cs +++ b/Engine.Core/Abstract/IIdentifiable.cs @@ -3,7 +3,7 @@ namespace Engine.Core; /// /// Represents any instance in the engine with an id. /// -public interface IIdentifiable : System.IComparable +public interface IIdentifiable { /// /// Event triggered when the of the changes. diff --git a/Engine.Core/BaseEntity.cs b/Engine.Core/BaseEntity.cs index 87982f2..e259b21 100644 --- a/Engine.Core/BaseEntity.cs +++ b/Engine.Core/BaseEntity.cs @@ -101,6 +101,4 @@ public abstract class BaseEntity : IEntity protected BaseEntity() => Id = Guid.NewGuid().ToString("D"); protected BaseEntity(string id) => Id = id; - - public int CompareTo(IIdentifiable? other) => Id.CompareTo(other?.Id); } diff --git a/Engine.Core/Extensions/IdentifiableExtensions.cs b/Engine.Core/Extensions/IdentifiableExtensions.cs index 35d7d02..0bb8f74 100644 --- a/Engine.Core/Extensions/IdentifiableExtensions.cs +++ b/Engine.Core/Extensions/IdentifiableExtensions.cs @@ -3,5 +3,10 @@ namespace Engine.Core; public static class IdentifiableExtensions { public static bool IsIdentical(this IIdentifiable? left, IIdentifiable? right) - => left?.CompareTo(right) == 0; + { + if (left == null || right == null) + return false; + + return left?.Id?.CompareTo(right?.Id) == 0; + } }