add UniquieID abstract base class

This commit is contained in:
2023-08-02 06:39:56 +02:00
parent ef85aea1c5
commit 8fcb6a42d3
2 changed files with 61 additions and 36 deletions

View File

@@ -9,33 +9,8 @@ using System.Threading.Tasks;
namespace Pilz.Cryptography
{
public class UniquieID<TargetType> : IUniquieID
public class UniquieID<TargetType> : UniquieID
{
private static int currentSimpleID = 0;
[JsonProperty(nameof(ID))]
private string _iD;
[JsonIgnore]
public string ID
{
get
{
if (GenerateOnGet)
GenerateIfNull();
return _iD;
}
internal set
=> _iD = value;
}
[JsonIgnore]
public bool HasID { get => !string.IsNullOrEmpty(_iD); }
[JsonIgnore]
public bool SimpleMode { get; set; } = false;
[JsonIgnore]
public bool GenerateOnGet { get; set; } = false;
public UniquieID() : this(false)
{
}
@@ -46,17 +21,13 @@ namespace Pilz.Cryptography
GenerateIfNull();
}
public void Generate()
public override void Generate()
{
if (SimpleMode)
ID = typeof(TargetType).ToString() + currentSimpleID++.ToString();
else
ID = GenerateUniquieID<TargetType>(string.Empty);
}
public void GenerateIfNull()
{
if (!HasID) Generate();
}
private static string GenerateUniquieID<T>(string var)
{
@@ -92,14 +63,11 @@ namespace Pilz.Cryptography
return Win32_PhysicalMedia_SerialNumber;
}
public override string ToString() => ID;
public override bool Equals(object obj)
{
var res = false;
var iD = obj as UniquieID<TargetType>;
if (iD is object)
if (obj is UniquieID<TargetType> iD)
{
if (ReferenceEquals(res, iD))
res = true;
@@ -130,7 +98,7 @@ namespace Pilz.Cryptography
public override int GetHashCode()
{
return -1430039477 + EqualityComparer<string>.Default.GetHashCode(_iD);
return base.GetHashCode();
}
public static implicit operator string(UniquieID<TargetType> id) => id.ID;