diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index bf09edd..ddf2c08 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -90,14 +90,36 @@ namespace Pilz.Cryptography public override bool Equals(object obj) { + var res = false; var iD = obj as UniquieID; - var leftHasID = iD != null && iD.HasID; - var rightHasID = HasID; - if (leftHasID && rightHasID) - return _iD.Equals(iD._iD); - else - return false; + if (iD is object) + { + if (ReferenceEquals(res, iD)) + res = true; + else + { + var leftHasID = iD.HasID; + var rightHasID = HasID; + + if (!leftHasID && iD.GenerateOnGet) + { + iD.Generate(); + leftHasID = iD.HasID; + } + + if (!rightHasID && GenerateOnGet) + { + Generate(); + rightHasID = HasID; + } + + if (leftHasID && rightHasID) + res = _iD.Equals(iD._iD); + } + } + + return res; } public override int GetHashCode()