add UniquieID abstract base class
This commit is contained in:
@@ -9,33 +9,8 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace Pilz.Cryptography
|
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)
|
public UniquieID() : this(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -46,17 +21,13 @@ namespace Pilz.Cryptography
|
|||||||
GenerateIfNull();
|
GenerateIfNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Generate()
|
public override void Generate()
|
||||||
{
|
{
|
||||||
if (SimpleMode)
|
if (SimpleMode)
|
||||||
ID = typeof(TargetType).ToString() + currentSimpleID++.ToString();
|
ID = typeof(TargetType).ToString() + currentSimpleID++.ToString();
|
||||||
else
|
else
|
||||||
ID = GenerateUniquieID<TargetType>(string.Empty);
|
ID = GenerateUniquieID<TargetType>(string.Empty);
|
||||||
}
|
}
|
||||||
public void GenerateIfNull()
|
|
||||||
{
|
|
||||||
if (!HasID) Generate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GenerateUniquieID<T>(string var)
|
private static string GenerateUniquieID<T>(string var)
|
||||||
{
|
{
|
||||||
@@ -92,14 +63,11 @@ namespace Pilz.Cryptography
|
|||||||
return Win32_PhysicalMedia_SerialNumber;
|
return Win32_PhysicalMedia_SerialNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString() => ID;
|
|
||||||
|
|
||||||
public override bool Equals(object obj)
|
public override bool Equals(object obj)
|
||||||
{
|
{
|
||||||
var res = false;
|
var res = false;
|
||||||
var iD = obj as UniquieID<TargetType>;
|
|
||||||
|
|
||||||
if (iD is object)
|
if (obj is UniquieID<TargetType> iD)
|
||||||
{
|
{
|
||||||
if (ReferenceEquals(res, iD))
|
if (ReferenceEquals(res, iD))
|
||||||
res = true;
|
res = true;
|
||||||
@@ -130,7 +98,7 @@ namespace Pilz.Cryptography
|
|||||||
|
|
||||||
public override int GetHashCode()
|
public override int GetHashCode()
|
||||||
{
|
{
|
||||||
return -1430039477 + EqualityComparer<string>.Default.GetHashCode(_iD);
|
return base.GetHashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static implicit operator string(UniquieID<TargetType> id) => id.ID;
|
public static implicit operator string(UniquieID<TargetType> id) => id.ID;
|
||||||
|
|||||||
57
Pilz.Cryptography/UniquieIDBase.cs
Normal file
57
Pilz.Cryptography/UniquieIDBase.cs
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Pilz.Cryptography
|
||||||
|
{
|
||||||
|
public abstract class UniquieID : IUniquieID
|
||||||
|
{
|
||||||
|
protected static int currentSimpleID = 0;
|
||||||
|
|
||||||
|
[JsonProperty(nameof(ID))]
|
||||||
|
protected string _iD;
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public virtual bool SimpleMode { get; set; } = false;
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public virtual bool GenerateOnGet { get; set; } = false;
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public virtual bool HasID => !string.IsNullOrEmpty(_iD);
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public virtual string ID
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (GenerateOnGet)
|
||||||
|
GenerateIfNull();
|
||||||
|
return _iD;
|
||||||
|
}
|
||||||
|
internal set
|
||||||
|
=> _iD = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void Generate();
|
||||||
|
public abstract override bool Equals(object obj);
|
||||||
|
|
||||||
|
public virtual void GenerateIfNull()
|
||||||
|
{
|
||||||
|
if (!HasID) Generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => ID;
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return -1430039477 + EqualityComparer<string>.Default.GetHashCode(_iD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static implicit operator string(UniquieID id) => id.ID;
|
||||||
|
|
||||||
|
public static bool operator ==(UniquieID left, UniquieID right) => left.ID.Equals(right.ID);
|
||||||
|
public static bool operator !=(UniquieID left, UniquieID right) => !left.ID.Equals(right.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user