From 8fcb6a42d39df3cb3c5d5bf21402c7c4085b5056 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 06:39:56 +0200 Subject: [PATCH 1/8] add UniquieID abstract base class --- Pilz.Cryptography/UniquieID.cs | 40 +++------------------ Pilz.Cryptography/UniquieIDBase.cs | 57 ++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 36 deletions(-) create mode 100644 Pilz.Cryptography/UniquieIDBase.cs diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index dad0034..8d715a0 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -9,33 +9,8 @@ using System.Threading.Tasks; namespace Pilz.Cryptography { - public class UniquieID : IUniquieID + public class UniquieID : 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(string.Empty); } - public void GenerateIfNull() - { - if (!HasID) Generate(); - } private static string GenerateUniquieID(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; - if (iD is object) + if (obj is UniquieID iD) { if (ReferenceEquals(res, iD)) res = true; @@ -130,7 +98,7 @@ namespace Pilz.Cryptography public override int GetHashCode() { - return -1430039477 + EqualityComparer.Default.GetHashCode(_iD); + return base.GetHashCode(); } public static implicit operator string(UniquieID id) => id.ID; diff --git a/Pilz.Cryptography/UniquieIDBase.cs b/Pilz.Cryptography/UniquieIDBase.cs new file mode 100644 index 0000000..418b715 --- /dev/null +++ b/Pilz.Cryptography/UniquieIDBase.cs @@ -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.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); + } +} From dccd845a3d37c66500d3a55160c3e23c51223e9d Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 07:13:31 +0200 Subject: [PATCH 2/8] make base class not abstract --- Pilz.Cryptography/UniquieID.cs | 70 ++++++++++-------------------- Pilz.Cryptography/UniquieIDBase.cs | 69 +++++++++++++++++++++++++++-- 2 files changed, 88 insertions(+), 51 deletions(-) diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index 8d715a0..1647273 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -11,24 +11,36 @@ namespace Pilz.Cryptography { public class UniquieID : UniquieID { - public UniquieID() : this(false) + public UniquieID() : base() { } - public UniquieID(bool autoGenerate) + public UniquieID(bool autoGenerate) : base(autoGenerate) { - if (autoGenerate) - GenerateIfNull(); } - public override void Generate() + protected override string GenerateSimple() { - if (SimpleMode) - ID = typeof(TargetType).ToString() + currentSimpleID++.ToString(); - else - ID = GenerateUniquieID(string.Empty); + return typeof(TargetType).ToString() + base.GenerateSimple(); } + protected override string GenerateDefault() + { + return GenerateUniquieID(string.Empty); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + #region Statics for Generation + private static string GenerateUniquieID(string var) { var sn = TryGetSerialNumberOfFirstHardDrive(); @@ -59,47 +71,11 @@ namespace Pilz.Cryptography Win32_PhysicalMedia_SerialNumber = sn; } - + return Win32_PhysicalMedia_SerialNumber; } - public override bool Equals(object obj) - { - var res = false; - - if (obj is UniquieID iD) - { - 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() - { - return base.GetHashCode(); - } + #endregion public static implicit operator string(UniquieID id) => id.ID; public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; diff --git a/Pilz.Cryptography/UniquieIDBase.cs b/Pilz.Cryptography/UniquieIDBase.cs index 418b715..f7f48e8 100644 --- a/Pilz.Cryptography/UniquieIDBase.cs +++ b/Pilz.Cryptography/UniquieIDBase.cs @@ -5,7 +5,7 @@ using System.Text; namespace Pilz.Cryptography { - public abstract class UniquieID : IUniquieID + public class UniquieID : IUniquieID { protected static int currentSimpleID = 0; @@ -34,22 +34,83 @@ namespace Pilz.Cryptography => _iD = value; } - public abstract void Generate(); - public abstract override bool Equals(object obj); + public UniquieID() : this(false) + { + } + + public UniquieID(bool autoGenerate) + { + if (autoGenerate) + GenerateIfNull(); + } + + public virtual void Generate() + { + if (SimpleMode) + ID = GenerateSimple(); + else + ID = GenerateDefault(); + } + + protected virtual string GenerateSimple() + { + return DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + currentSimpleID++.ToString(); + } + + protected virtual string GenerateDefault() + { + return new Random().Next().ToString() + currentSimpleID++.ToString(); + } public virtual void GenerateIfNull() { if (!HasID) Generate(); } - public override string ToString() => ID; + public override string ToString() + { + return ID; + } public override int GetHashCode() { return -1430039477 + EqualityComparer.Default.GetHashCode(_iD); } + public override bool Equals(object obj) + { + if (obj is UniquieID iD) + { + if (ReferenceEquals(obj, iD)) + return 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) + return _iD.Equals(iD._iD); + } + } + + return base.Equals(obj); + } + public static implicit operator string(UniquieID id) => id.ID; + public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; + public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(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); From 67be15157cd8dca8c7422964fd82021fc6555966 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 07:57:47 +0200 Subject: [PATCH 3/8] depricate UniquieID and adjust json converters --- ...UniquieIDStringJsonConverter.TargetType.cs | 11 ++ .../UniquieIDStringJsonConverter.cs} | 20 ++- Pilz.Cryptography/UniquieID.TargetType.cs | 40 ++++++ Pilz.Cryptography/UniquieID.cs | 104 ++++++++++++--- Pilz.Cryptography/UniquieIDBase.cs | 118 ------------------ 5 files changed, 148 insertions(+), 145 deletions(-) create mode 100644 Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs rename Pilz.Cryptography/{UniquiIDStringJsonConverter.cs => Json.Converters/UniquieIDStringJsonConverter.cs} (55%) create mode 100644 Pilz.Cryptography/UniquieID.TargetType.cs delete mode 100644 Pilz.Cryptography/UniquieIDBase.cs diff --git a/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs b/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs new file mode 100644 index 0000000..8b47679 --- /dev/null +++ b/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Pilz.Json.Converters +{ + [Obsolete] + public class UniquieIDStringJsonConverter : UniquieIDStringJsonConverter + { + } +} diff --git a/Pilz.Cryptography/UniquiIDStringJsonConverter.cs b/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.cs similarity index 55% rename from Pilz.Cryptography/UniquiIDStringJsonConverter.cs rename to Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.cs index 128f4f4..f3725ab 100644 --- a/Pilz.Cryptography/UniquiIDStringJsonConverter.cs +++ b/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.cs @@ -2,30 +2,28 @@ using Pilz.Cryptography; using System; using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Linq; using System.Text; -using System.Threading.Tasks; namespace Pilz.Json.Converters { - public class UniquiIDStringJsonConverter : JsonConverter + public class UniquieIDStringJsonConverter : JsonConverter { + public static bool EnableCheckForDepricatedTypes { get; set; } = true; + public override bool CanConvert(Type objectType) { - return typeof(UniquieID).IsAssignableFrom(objectType); + return typeof(UniquieID).IsAssignableFrom(objectType); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var idString = serializer.Deserialize(reader); - UniquieID id; + UniquieID id; - if (existingValue is object) - id = (UniquieID)existingValue; + if (existingValue is UniquieID existingID && (!EnableCheckForDepricatedTypes || existingID.GetType() == typeof(UniquieID))) + id = existingID; else - id = new UniquieID(); + id = new UniquieID(); id.ID = idString; @@ -34,7 +32,7 @@ namespace Pilz.Json.Converters public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - serializer.Serialize(writer, ((UniquieID)value).ID); + serializer.Serialize(writer, ((UniquieID)value).ID); } } } diff --git a/Pilz.Cryptography/UniquieID.TargetType.cs b/Pilz.Cryptography/UniquieID.TargetType.cs new file mode 100644 index 0000000..588ce60 --- /dev/null +++ b/Pilz.Cryptography/UniquieID.TargetType.cs @@ -0,0 +1,40 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace Pilz.Cryptography +{ + [Obsolete("To be removed in the future. Use base class UniquieID!")] + public class UniquieID : UniquieID + { + public UniquieID() : base() + { + } + + public UniquieID(bool autoGenerate) : base(autoGenerate) + { + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public static implicit operator string(UniquieID id) => id.ID; + public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; + public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(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); + } +} \ No newline at end of file diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index 1647273..b47068b 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -1,47 +1,119 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; -using System.Linq; using System.Management; using System.Security.Cryptography; using System.Text; -using System.Threading.Tasks; namespace Pilz.Cryptography { - public class UniquieID : UniquieID + [JsonConverter(typeof(Json.Converters.UniquieIDStringJsonConverter))] + public class UniquieID : IUniquieID { - public UniquieID() : base() + protected static ulong 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 UniquieID() : this(false) { } - public UniquieID(bool autoGenerate) : base(autoGenerate) + public UniquieID(bool autoGenerate) { + if (autoGenerate) + GenerateIfNull(); } - protected override string GenerateSimple() + public virtual void Generate() { - return typeof(TargetType).ToString() + base.GenerateSimple(); + if (SimpleMode) + ID = GenerateSimple(); + else + ID = GenerateDefault(); } - protected override string GenerateDefault() + protected virtual string GenerateSimple() { - return GenerateUniquieID(string.Empty); + return new Random().Next().ToString() + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + currentSimpleID++.ToString(); + } + + protected virtual string GenerateDefault() + { + return GenerateUniquieID(currentSimpleID++.ToString()); + } + + public virtual void GenerateIfNull() + { + if (!HasID) Generate(); + } + + public override string ToString() + { + return ID; } public override int GetHashCode() { - return base.GetHashCode(); + return -1430039477 + EqualityComparer.Default.GetHashCode(_iD); } public override bool Equals(object obj) { + if (obj is UniquieID iD) + { + if (ReferenceEquals(obj, iD)) + return 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) + return _iD.Equals(iD._iD); + } + } + return base.Equals(obj); } #region Statics for Generation - private static string GenerateUniquieID(string var) + protected static string GenerateUniquieID(string var) { var sn = TryGetSerialNumberOfFirstHardDrive(); var dateTime = DateTime.UtcNow.ToString("yyyyMMddHHmmssfffffff"); @@ -77,11 +149,11 @@ namespace Pilz.Cryptography #endregion - public static implicit operator string(UniquieID id) => id.ID; - public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; - public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(id) }; + public static implicit operator string(UniquieID id) => id.ID; + public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; + public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(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); + 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); } } diff --git a/Pilz.Cryptography/UniquieIDBase.cs b/Pilz.Cryptography/UniquieIDBase.cs deleted file mode 100644 index f7f48e8..0000000 --- a/Pilz.Cryptography/UniquieIDBase.cs +++ /dev/null @@ -1,118 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Pilz.Cryptography -{ - public 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 UniquieID() : this(false) - { - } - - public UniquieID(bool autoGenerate) - { - if (autoGenerate) - GenerateIfNull(); - } - - public virtual void Generate() - { - if (SimpleMode) - ID = GenerateSimple(); - else - ID = GenerateDefault(); - } - - protected virtual string GenerateSimple() - { - return DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + currentSimpleID++.ToString(); - } - - protected virtual string GenerateDefault() - { - return new Random().Next().ToString() + currentSimpleID++.ToString(); - } - - public virtual void GenerateIfNull() - { - if (!HasID) Generate(); - } - - public override string ToString() - { - return ID; - } - - public override int GetHashCode() - { - return -1430039477 + EqualityComparer.Default.GetHashCode(_iD); - } - - public override bool Equals(object obj) - { - if (obj is UniquieID iD) - { - if (ReferenceEquals(obj, iD)) - return 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) - return _iD.Equals(iD._iD); - } - } - - return base.Equals(obj); - } - - public static implicit operator string(UniquieID id) => id.ID; - public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; - public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(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); - } -} From 9100057ae23974bc7ec66d27461742a66f9808e0 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 08:09:12 +0200 Subject: [PATCH 4/8] more constructors for UniquieID --- Pilz.Cryptography/UniquieID.cs | 23 +++++++++++++++----- Pilz.Cryptography/UniquieIDGenerationMode.cs | 13 +++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 Pilz.Cryptography/UniquieIDGenerationMode.cs diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index b47068b..e493013 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -16,10 +16,10 @@ namespace Pilz.Cryptography protected string _iD; [JsonIgnore] - public virtual bool SimpleMode { get; set; } = false; + public virtual bool SimpleMode { get; } [JsonIgnore] - public virtual bool GenerateOnGet { get; set; } = false; + public virtual bool GenerateOnGet { get; } [JsonIgnore] public virtual bool HasID => !string.IsNullOrEmpty(_iD); @@ -37,14 +37,27 @@ namespace Pilz.Cryptography => _iD = value; } - public UniquieID() : this(false) + public UniquieID() : this(UniquieIDGenerationMode.None) { } - public UniquieID(bool autoGenerate) + public UniquieID(UniquieIDGenerationMode mode) : this(mode, false) { - if (autoGenerate) + } + + public UniquieID(UniquieIDGenerationMode mode, bool simpleMode) + { + SimpleMode = simpleMode; + + if (mode == UniquieIDGenerationMode.GenerateOnInit) GenerateIfNull(); + else if (mode == UniquieIDGenerationMode.GenerateOnGet) + GenerateOnGet = true; + } + + [Obsolete] + public UniquieID(bool autoGenerate) : this(autoGenerate ? UniquieIDGenerationMode.GenerateOnInit : UniquieIDGenerationMode.None) + { } public virtual void Generate() diff --git a/Pilz.Cryptography/UniquieIDGenerationMode.cs b/Pilz.Cryptography/UniquieIDGenerationMode.cs new file mode 100644 index 0000000..d7f0c34 --- /dev/null +++ b/Pilz.Cryptography/UniquieIDGenerationMode.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Pilz.Cryptography +{ + public enum UniquieIDGenerationMode + { + None, + GenerateOnGet, + GenerateOnInit + } +} From bc5aec6da83320fb7771279f360005bbc6e6527d Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 08:19:29 +0200 Subject: [PATCH 5/8] remove obsulete UniquieID types --- ...UniquieIDStringJsonConverter.TargetType.cs | 11 ----- Pilz.Cryptography/UniquieID.TargetType.cs | 40 ------------------- 2 files changed, 51 deletions(-) delete mode 100644 Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs delete mode 100644 Pilz.Cryptography/UniquieID.TargetType.cs diff --git a/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs b/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs deleted file mode 100644 index 8b47679..0000000 --- a/Pilz.Cryptography/Json.Converters/UniquieIDStringJsonConverter.TargetType.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Pilz.Json.Converters -{ - [Obsolete] - public class UniquieIDStringJsonConverter : UniquieIDStringJsonConverter - { - } -} diff --git a/Pilz.Cryptography/UniquieID.TargetType.cs b/Pilz.Cryptography/UniquieID.TargetType.cs deleted file mode 100644 index 588ce60..0000000 --- a/Pilz.Cryptography/UniquieID.TargetType.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Management; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace Pilz.Cryptography -{ - [Obsolete("To be removed in the future. Use base class UniquieID!")] - public class UniquieID : UniquieID - { - public UniquieID() : base() - { - } - - public UniquieID(bool autoGenerate) : base(autoGenerate) - { - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } - - public override bool Equals(object obj) - { - return base.Equals(obj); - } - - public static implicit operator string(UniquieID id) => id.ID; - public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; - public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(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); - } -} \ No newline at end of file From e142513083d99acafbbb172e37a02c83a1c11d1b Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 2 Aug 2023 08:47:53 +0200 Subject: [PATCH 6/8] add IUniquieIDHost --- Pilz.Cryptography/IUniquieIDHost.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Pilz.Cryptography/IUniquieIDHost.cs diff --git a/Pilz.Cryptography/IUniquieIDHost.cs b/Pilz.Cryptography/IUniquieIDHost.cs new file mode 100644 index 0000000..d391edb --- /dev/null +++ b/Pilz.Cryptography/IUniquieIDHost.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Pilz.Cryptography +{ + /// + /// Can be implemented on objects that provides an UniquieID. + /// + public interface IUniquieIDHost + { + UniquieID ID { get; } + } +} From 926951e268697b40cd8416de61f2c28eafefde42 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Wed, 9 Aug 2023 09:26:33 +0200 Subject: [PATCH 7/8] PaintingControl: Zoom with Alt instead of Control --- Pilz.UI/PaintingControl/PaintingControl.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pilz.UI/PaintingControl/PaintingControl.vb b/Pilz.UI/PaintingControl/PaintingControl.vb index 0de9a3c..e1a7890 100644 --- a/Pilz.UI/PaintingControl/PaintingControl.vb +++ b/Pilz.UI/PaintingControl/PaintingControl.vb @@ -644,7 +644,7 @@ Public Class PaintingControl End Sub Private Sub CheckMouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel - If pressedControl Then + If pressedAlt Then Dim val As Single = e.Delta / 120 / 10 ZoomFactor = New SizeF(Math.Max(ZoomFactor.Width + val, 0.25), Math.Max(ZoomFactor.Height + val, 0.25)) Refresh() From 77cbcd0dcbeb1dc027fe3795cbf130a3d40d55e8 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Sat, 26 Aug 2023 20:34:42 +0200 Subject: [PATCH 8/8] add GetExecutablePath() --- Pilz.IO/Extensions.cs | 26 ++++++++++++++++++++++++++ Pilz.IO/Pilz.IO.csproj | 4 ++++ Pilz.Win32/Native/Kernel32.vb | 16 ++++++++++++++++ Pilz.Win32/Native/User32.vb | 6 ++++-- Pilz/Runtime/RuntimeInformationsEx.vb | 16 ++++++++++------ 5 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 Pilz.IO/Extensions.cs create mode 100644 Pilz.Win32/Native/Kernel32.vb diff --git a/Pilz.IO/Extensions.cs b/Pilz.IO/Extensions.cs new file mode 100644 index 0000000..0cf41e2 --- /dev/null +++ b/Pilz.IO/Extensions.cs @@ -0,0 +1,26 @@ +using Pilz.Runtime; +using Pilz.Win32.Native; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; + +namespace Pilz.IO +{ + public static class Extensions + { + static readonly int MAX_PATH = 255; + + public static string GetExecutablePath(bool checkRealOS = false) + { + if (RuntimeInformationsEx.IsOSPlatform(OSType.Windows, checkRealOS)) + { + var sb = new StringBuilder(MAX_PATH); + Kernel32.GetModuleFileName(IntPtr.Zero, sb, MAX_PATH); + return sb.ToString(); + } + else + return Process.GetCurrentProcess().MainModule.FileName; + } + } +} diff --git a/Pilz.IO/Pilz.IO.csproj b/Pilz.IO/Pilz.IO.csproj index 511e3a5..3b9bcb2 100644 --- a/Pilz.IO/Pilz.IO.csproj +++ b/Pilz.IO/Pilz.IO.csproj @@ -86,4 +86,8 @@ Application.Designer.cs + + + + \ No newline at end of file diff --git a/Pilz.Win32/Native/Kernel32.vb b/Pilz.Win32/Native/Kernel32.vb new file mode 100644 index 0000000..0164502 --- /dev/null +++ b/Pilz.Win32/Native/Kernel32.vb @@ -0,0 +1,16 @@ +Imports System.Runtime.InteropServices +Imports System.Text + +Namespace Native + + Public Class Kernel32 + + Private Const LIB_KERNEL32 As String = "kernel32.dll" + + + Public Shared Function GetModuleFileName(hModule As IntPtr, lpFilename As StringBuilder, nSize As Integer) As UInteger + End Function + + End Class + +End Namespace diff --git a/Pilz.Win32/Native/User32.vb b/Pilz.Win32/Native/User32.vb index d10c083..cf69991 100644 --- a/Pilz.Win32/Native/User32.vb +++ b/Pilz.Win32/Native/User32.vb @@ -4,11 +4,13 @@ Namespace Native Public Class User32 - + Private Const LIB_USER32 As String = "user32.dll" + + Public Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef r As RECT) As Boolean End Function - + Public Shared Function ChildWindowFromPointEx(ByVal hWndParent As IntPtr, ByVal pt As POINT, ByVal uFlags As UInteger) As IntPtr End Function diff --git a/Pilz/Runtime/RuntimeInformationsEx.vb b/Pilz/Runtime/RuntimeInformationsEx.vb index d6f53c3..5e9ad7a 100644 --- a/Pilz/Runtime/RuntimeInformationsEx.vb +++ b/Pilz/Runtime/RuntimeInformationsEx.vb @@ -26,9 +26,9 @@ Namespace Runtime End Get End Property - Public ReadOnly Property RealOSType As OSType - Get - Static t As OSType? = Nothing + Public ReadOnly Property RealOSType As OSType + Get + Static t As OSType? = Nothing If t Is Nothing Then @@ -69,9 +69,13 @@ Namespace Runtime End If Return t - End Get - End Property + End Get + End Property - End Module + Public Function IsOSPlatform(os As OSType, checkRealOS As Boolean) As Boolean + Return If(checkRealOS, RealOSType, OSType) = os + End Function + + End Module End Namespace